DatagridView - Zelle mit text auswählen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Haudruferzappeltnoch.

    DatagridView - Zelle mit text auswählen

    Hallo zusammen,

    wir lässt sich in einem DataGridView programmatisch eine Zelle mit einem bestimmten wert auswählen?

    Beispiel:
    Max
    Mustermann
    Tanja
    Müller
    Jonas
    Schneider
    Martina
    Maurer

    Wie lässt sich die ausgewählte Zelle/Zeile im Code auf "Müller" festlegen? Was ich gefunden habe, ist mit der Zeilen ID zu arbeiten. Das funktioniert hier allerdings nicht, da die Daten im View dynamisch aus der Datenbank abgerufen werden. Somit weiß ich nie, ob "Müller" in der 2. Zeile steht, oder erst in der 5.

    Jemand einen Tipp für mich?

    Danke!
    was denn für eine ID?
    Und wem musste die mitgeben?

    Ja, du musst im DGV diejenige Zelle suchen mit dem wert "müller".
    Eine eingebaute Müller-Suchfunktion gibts im DGV nicht.

    Um es genau zu sagen: Du musst diejenige Kombination von Spalten-/Zeilen-Index finden, mit der du die Zelle addressieren kannst, wo "müller" drin steht.
    Schreib dir am besten eine kleine Function, der du ein DGV übergibst, sowie einen Suchbegriff, und die Function returnt dann die DGV-Cell oder aber Nothing.
    Kriegste das hin?

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

    Nur mal so ins Unreine geschrieben... (ToDo: Fehlerbehandlung!)

    VB.NET-Quellcode

    1. Private Sub SearchFor(ByVal SearchFor As String, Optional ByVal ColumnIndex As Integer = -1)
    2. Dim StartColumn, EndColumn As Integer
    3. dgvSearchFor.ClearSelection()
    4. If ColumnIndex >= 0 Then
    5. StartColumn = ColumnIndex
    6. EndColumn = ColumnIndex
    7. Else
    8. StartColumn = 0
    9. EndColumn = dgvSearchFor.Columns.GetColumnCount(DataGridViewElementStates.Displayed) - 1
    10. End If
    11. For Each Row As DataGridViewRow In dgvSearchFor.Rows
    12. For Column As Integer = StartColumn To EndColumn
    13. If Row.Cells(Column).Value.ToString = SearchFor Then
    14. Row.Cells(Column).Selected = True
    15. Exit Sub
    16. End If
    17. Next
    18. Next
    19. MessageBox.Show("Such-String nicht gefunden!", "nix da", MessageBoxButtons.OK, MessageBoxIcon.Information)
    20. End Sub


    Ginge auch als Function, die die ggf. gefundene DaraGridViewCell zurückgibt, falls man damit noch was anderes veranstalten will.
    Schicker wäre es allerdings, wenn Du die DataSource filtern würdest und auf der Grundlage Die entsprechende Cell aus selected setzt.

    JRole

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

    HeizungAuf5 schrieb:

    die Daten im View dynamisch aus der Datenbank
    Dann hast du doch bestimmt eine typisierte DataTable an dem DGV sitzen.

    VB.NET-Quellcode

    1. dgv.Rows.Cast(Of DataGridViewRow).First(Function(x) DirectCast(DirectCast(x.DataBoundItem, DataRowView).Row, DataSet1.TestDataRow) Is foundTestDataRow).Cells(SpaltenIndex).Selected = True
    Musst vorher noch Spaltenindex festlegen und natürlich die Datenzeile foundTestDataRow suchen, was auch recht einfach ist in einer typisierten Tabelle, vor allem dann wenn auch noch ein Schlüssel auf der Spalte liegt (Beim Nachnamen wohl eher nicht).