Hallo,
habe ganz Standard eine DataTable per BindigSource an ein DGV gebunden.
Man kann das DGV in einer Spalte nach einem bestimmten Eintrag durchsuchen. Das ist realisiert durch Textbox, in welche der Zielwert getippt wird und anschließendem Knopfdruck. Daraufhin wird die Zeile markiert und auf die richtige Höhe gescrollt.
Wenn ich im DGV aber nun umsortiere per Spaltenkopfclick (Das scheint generell in einem DGV so möglich zu sein, ich habs zumindest nicht reingecodet)
dann stimmt die gefundene Zeile nicht mehr mit dem was gesucht ist überein.
Es scheint also zwischen Datenquelle und DGV eine Differenz zu enstehen durch die Sortierung, denn hiermit funktioniert es wieder (Suche im DGV):
Dies geschah allerdings erst nachdem
Nachtrag: Nicht nur der Primärschlüssel wurde in der
Also den
Daher zwei Fragen.
Wieso ändert der Primärschlüssel das Verhalten der ersten Version?
Und wie sollte man es eigentlich richtig machen?
Viele Grüße
habe ganz Standard eine DataTable per BindigSource an ein DGV gebunden.
Man kann das DGV in einer Spalte nach einem bestimmten Eintrag durchsuchen. Das ist realisiert durch Textbox, in welche der Zielwert getippt wird und anschließendem Knopfdruck. Daraufhin wird die Zeile markiert und auf die richtige Höhe gescrollt.
VB.NET-Quellcode
- Private Sub btSuche_Click(sender As Object, e As EventArgs) Handles btSuche.Click
- If tbSuche.Text <> "" AndAlso Integer.TryParse(tbSuche.Text, 0) Then
- If TabControl1.SelectedTab Is TabPage3 Then
- dgv3.ClearSelection()
- Dim rowindex As Integer
- Dim found As Boolean = False
- For Each row As DataSet1.MyTableRow In DS1.MyTable
- If row.IDNr = Integer.Parse(tbSuche.Text) Then
- rowindex = DS1.MyTable.Rows.IndexOf(row)
- found = True
- dgv3.Rows(rowindex).Selected = True
- dgv3.FirstDisplayedScrollingRowIndex = dgv3.SelectedRows(0).Index
- Exit For
- End If
- Next
- If Not found Then
- MessageBox.Show("Nr nicht vorhanden")
- End If
- End If
- End If
- End Sub
Wenn ich im DGV aber nun umsortiere per Spaltenkopfclick (Das scheint generell in einem DGV so möglich zu sein, ich habs zumindest nicht reingecodet)
dann stimmt die gefundene Zeile nicht mehr mit dem was gesucht ist überein.
Es scheint also zwischen Datenquelle und DGV eine Differenz zu enstehen durch die Sortierung, denn hiermit funktioniert es wieder (Suche im DGV):
VB.NET-Quellcode
- Private Sub btSuche_Click(sender As Object, e As EventArgs) Handles btSuche.Click
- If tbSuche.Text <> "" AndAlso Integer.TryParse(tbSuche.Text, 0) Then
- If TabControl1.SelectedTab Is TabPage3 Then
- dgv3.ClearSelection()
- Dim rowindex As Integer
- Dim found As Boolean = False
- For Each row As DataGridViewRow In dgv3.Rows
- If CInt(row.Cells(0).Value) = Integer.Parse(tbSuche.Text) Then
- rowindex = row.Index
- found = True
- dgv3.Rows(rowindex).Selected = True
- dgv3.FirstDisplayedScrollingRowIndex = dgv3.SelectedRows(0).Index
- Exit For
- End If
- Next
- If Not found Then
- MessageBox.Show("Nr nicht vorhanden")
- End If
- End If
- End If
- End Sub
Dies geschah allerdings erst nachdem
MyTable
für die IDNr-Spalte einen Primärschlüssel hinzugefügt bekam. Als MyTable
noch schlüsselfrei war, funktionierte auch die erste Methode.Nachtrag: Nicht nur der Primärschlüssel wurde in der
DataTable
hinzugefügt auch die Befüllung der Tabelle hat sich geändert:Also den
Clear
konnte ich mir sparen, weil der Schlüssel automatisch dafür sorgt, dass die alten EInträgen überschrieben werden.Daher zwei Fragen.
Wieso ändert der Primärschlüssel das Verhalten der ersten Version?
Und wie sollte man es eigentlich richtig machen?
Viele Grüße
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()