Datagridviewcomboboxcell value entfernen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Datagridviewcomboboxcell value entfernen

    Hallo,

    in einem Projekt von mir arbeite ich mit einem gebundenen Datagridview.
    Dort wird mit einer MySQL Datenbank gearbeitet, was hier aber keinen Unterschied machen sollte - da das DatagridView selbst das Problem macht.

    VB.NET-Quellcode

    1. For Each rw As DataGridViewRow In frm_BG_BgDgv.ElementeDataGridView.Rows
    2. rw.Cells("Abteilung").Value = Abteilung 'integer value, DatagridviewComboboxCell , gebunden
    3. rw.Cells(krz & "_Start").Value = DBNull.Value 'DatagridviewTextBoxCell, gebunden
    4. rw.Cells(krz & "_BaugrIO").Value = DBNull.Value 'DatagridviewTextBoxCell, gebunden
    5. rw.Cells(krz & "_Ende").Value = DBNull.Value 'DatagridviewTextBoxCell, gebunden
    6. rw.Cells(krz & "_MA").Value = DBNull.Value DatagridviewComboboxCell, gebunden
    7. next



    Das Problem habe ich bei der seperat gestellten Zeile: wie resette ich eine gebundene DatagridviweComboboxCell ?
    Weder
    rw.Cells(krz & "_MA").Value = DBNull.Value
    noch
    rw.Cells(krz & "_MA").Value = Nothing
    funktioniert.

    Beides gibt keine Fehlermeldung raus, das Programm läuft drüber und zeigt weiterhin den ursprünglichen Wert an.
    Muss hierbei etwas besonders beachtet werden?

    Gunngir schrieb:

    wie resette ich eine gebundene DatagridviweComboboxCell ?
    Was verstehst du damit genau? Soll im DGV bei einer neu erstellten Zeile oder bei einer bestehende Zeile ein Vorgabewert der Zelle eingestellt werden?
    Mache solches auf Datenebene und benutze dein DGV zur Visualisierung deiner Daten...
    Datagridviewcomboboxcell value entfernen
    Nicht entfernen, sondern aus einer Liste auswählen (d.h. in der liste muss ein leerer Dummywert zum Auswählen enthalten sein)...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VB1963“ ()

    Hallo VB1963,

    mit resetten meine ich den Wert der Zelle auf dbnull.value bzw nothing setzen.

    VB.NET-Quellcode

    1. rw.Cells(krz & "_MA").Value = DBNull.Value


    In der Combobox wird der Wert des Mitarbeiters ausgewählt. Die Datasource ist also eine andere Tabelle.
    Klar ist die einfachste Lösung, einen "Mitarbeiter" zu erstellen, welcher einen leeren Wert hat.
    Dies wäre der letzte Schritt gewesen, falls es nicht geht.

    Mein Ziel ist es, den ausgewählten Wert der DataGridViewComboboxCell zu entfernen.

    Hier ein Beispiel bei einer normalen Combobox, welches für die DataGridViewComboboxCell ebenfalls nicht funktioniert (weil kein selectedindex vorhanden).

    VB.NET-Quellcode

    1. me.cmbB.SelectedIndex = -1

    Gunngir schrieb:

    Die Datasource ist also eine andere Tabelle.
    Dann lösch mal den korrespondierenden Wert in der Tabelle.
    Mixed-Zugriff funktioniert da nicht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo RodFromGermany,


    Was meinst Du dann mit "lösch den korrespondierenden Wert"?
    Soll ich eine SQL-Abfrage direkt an den Server senden, der den Wert dann löscht?
    Wäre auch möglich - aber wiederum nicht sauber :(

    Die Mitarbeiter in der sekundären Tabelle müssen vorhanden bleiben, da sie nur als Index dienen wer wann was an der Tabelle geändert hat.
    Die Mitarbeiter sind also auch noch an anderen Stellen eingetragen.

    Um verwirrungs"versuche" meinerseits zu entgenehn, hier der Eintrag aus dem Datagridview:

    Das Ziel ist es nur, den ausgewählten Eintrag maschinell zu löschen (=> Pseudocode: cbx.selection = DBNULL.value / Nothing)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Gunngir“ ()

    Was passiert, wenn Du im laufenden Programm den Wert im DGV per Select und Delete löschst?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    ich kann einen Wert über die GUI nicht löschen, da fullrowselect aktiviert ist - und damit auch programmiert wurde.

    Diese Werte sollten auch gar nicht vom Beuntzer editierbar sein, diese werden automatisch getrackt.


    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Gunngir“ ()

    Gunngir schrieb:

    Das Ziel ist es nur, den ausgewählten Eintrag maschinell zu löschen (=> Pseudocode: cbx.selection = DBNULL.value / Nothing)
    Du musst deine Denkweise ändern, dann wird alles viel leichter.
    Du willst nicht einen "Datagridviewcomboboxcell value entfernen", sondern du willst in einem Datensatz die Kon_Ma - Property auf DbNull setzen.
    ich weiß jetzt nicht, welchen Datentyp der Datensatz hat, aber Kon_Ma scheint ein Fremdschlüssel zu sein auf eine Tabelle namens Mitarbeiter.

    Wie gesagt: Wenns in der DataTable (deren Name ich nicht kenne) zulässig ist, die Kon_Ma-Property auf DbNull zu setzen, dann ist das codeseitig höchst einfach möglich, ich glaub ich weiß sogar den Namen der Methode dafür:
    DataRowDerenNameIchNichtWeiss.SetKon_MaNull()
    Das weiß ich, weil ein typDataset alle Namen ja nach einem einfachen Schema generiert, und aus deim Bildle kann auf eine Kon_Ma-Property schließen.
    Wie gesagt: Denke ändern, Controls vergessen, und Daten bearbeiten, nicht Controls.

    Falls dich interessiert, wie dein Dataset aufgebaut ist, bzw. wie man genauer untersucht, wie es aufgebaut ist, kannst ich dir codeproject.com/Articles/10351…ped-Dataset-for-Beginners zur Lektüre empfehlen, da wird ausgeführt, wie man den Objektkatalog für verwenden kann, um sich schlau zu machen.