Hallo zusammen,
ich möchte eine Tabelle mit Daten aus einer Datenbank füllen. Als erste Spalte möchte ich ein Feld haben, wo ich explizit eine Zeile markieren kann. Es darf immer nur eine Zeile markiert sein.
Es gibt die Felder ID und Beschreibung in der Datenbank. Um ein entsprechendes „Markierungsfeld“ in die Tabelle zu bekommen bringe ich in den Select eine „Pseudospalte“ Anzeige.
Das funktioniert auch ganz gut. Nun Das Problem immer nur eine Spalte zu markieren:
Das sieht auch noch ganz gut aus. Aber jetzt mein Problem:
Wenn ich die Zeile auslesen möchte in der die Markierung ist funktioniert das nicht.
Wenn ich z.B. erst die Zeile 5 markiere und dann wieder in Zeile 5 klicke um die Markierung wieder zu löschen ( also keine Zeile mehr markierte ist) bekomme ich mit folgendem Aufruf immer noch einen Wert für Zeile 5 Markiert:
Was mache ich Falsch ? Oder geht das noch eleganter ?
Bin für jede Idee dankbar...
ich möchte eine Tabelle mit Daten aus einer Datenbank füllen. Als erste Spalte möchte ich ein Feld haben, wo ich explizit eine Zeile markieren kann. Es darf immer nur eine Zeile markiert sein.
Es gibt die Felder ID und Beschreibung in der Datenbank. Um ein entsprechendes „Markierungsfeld“ in die Tabelle zu bekommen bringe ich in den Select eine „Pseudospalte“ Anzeige.
Code:
SELECT CONVERT(BIT, 0) AS Anzeige, ID, Beschreibung FROM Tabelle ORDER BY ID
Code:
Private Sub MyDtGrdView_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyDtGrdView.Click Dim MyGrid As DataGridView = CType(sender, DataGridView) Dim MyRow As Integer = MyGrid.CurrentCell.RowIndex For Each Row As DataGridViewRow In MyGrid.Rows Row.Cells("Anzeige").Value = False Next MyGrid.Rows(MyRow).Cells("Anzeige").Value = True End Sub
Das sieht auch noch ganz gut aus. Aber jetzt mein Problem:
Wenn ich die Zeile auslesen möchte in der die Markierung ist funktioniert das nicht.
Wenn ich z.B. erst die Zeile 5 markiere und dann wieder in Zeile 5 klicke um die Markierung wieder zu löschen ( also keine Zeile mehr markierte ist) bekomme ich mit folgendem Aufruf immer noch einen Wert für Zeile 5 Markiert:
Code:
For Each Row As DataGridViewRow In MyDtGrdView.Rows If CType(Row.Cells("Anzeige").Value, Boolean) = True Then MyIDV = CType(MyDtGrdView.Rows(Row.Index).Cells("ID").Value, Integer) Exit For End If Next
Bin für jede Idee dankbar...
Comment