DatagridView mehrere Zeilen auslesen anhand der Daten in den feldern

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von djmatrix1987.

    DatagridView mehrere Zeilen auslesen anhand der Daten in den feldern

    Hallo liebe Community.

    Ich fülle ein Datagridview mit mehreren (ca 400) Zeilen an Daten. Das Datagridview sieht ungefähr so aus:

    VB.NET-Quellcode

    1. Spalte 1 Spalte 2 Spalte 3 Spalte 4
    2. ---------------------------------------------
    3. 1 1 wert wert
    4. 1 2 wert wert
    5. 1 3 wert wert
    6. 1 4 wert wert
    7. 2 1 wert wert
    8. 2 2 wert wert
    9. 2 3 wert wert
    10. 2 4 wert wert


    usw...
    Nun habe ich das Problem, das ich an die Werte (Spalte 3 und 4) ran muss und zwar die, die alle den Wert (zb. 1) in Spalte 1 haben. Wie kann ich das lösen?. Mit MySQL wäre das kein Problem aber ich MUSS leider den Datagridview nehmen.

    Habt ihr eine Ahnung wie ich da vorgehen kann?

    Besten Dank im Vorraus, Ben :)
    Nicht ganz:)

    Hier ein kleiner Ansatz:

    VB.NET-Quellcode

    1. Private Sub WertAuslesen()
    2. For i As Integer = 0 To DGV.Rows.Count - 1
    3. Dim s1 As String = DGV.Rows(i).Cells(0).Value.ToString
    4. If s1 = "1" Then
    5. Dim s3 As String = DGV.Rows(i).Cells(2).Value.ToString
    6. Dim s4 As String = DGV.Rows(i).Cells(3).Value.ToString
    7. 'weiter verarbeiten...
    8. End If
    9. Next
    10. End Sub
    Oder so:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. For row As Integer = 0 To Me.DataGridView1.RowCount - 1
    3. For col As Integer = 0 To Me.DataGridView1.ColumnCount - 1
    4. If Me.DataGridView1.Item(col, row).Value IsNot Nothing Then
    5. If Me.DataGridView1.Item(col, row).Value.ToString = "bla" Then
    6. MessageBox.Show("bla")
    7. End If
    8. End If
    9. Next
    10. Next
    11. End Sub
    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!
    jops...

    Bei meiner Schleife geht er nur die Rows durch und bei Rod geht er Rows und Cells durch!

    Anders geht es auch glaub ich gar nicht...
    Da du nur bestimmte Werte auslesen willst...

    Edit:
    Ich würde dir empfehlen, wenn es wirklich viele "Daten" sind, es in einen extra Thread laufen zu lassen!
    Man kennt ja das bekannte Windows-Problem:)
    Programm arbeitet --> "Klick" --> "Keine Rückmeldung" --> ABSTURZ

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

    rate ich von ab, wegen der Rules Of Optimization

    Kriege erstmal 10000 Datensätze zusammen - bisher sprachst du ja nur von 400.

    Und dann kommts drauf an, was du in der schleife machst. Wenn du nur nachzählst, hast du auch mit 10000 Datensätzen noch längst kein Problem.
    Wenn Du Lust hast, kannst Du auch gleich mit Parallel-Verarbeitung starten, suche nach Parallel.For.
    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!

    djmatrix1987 schrieb:

    Ok Programm über Nacht laufen lasse. Es sind bisher 758.372 Datensätze... Ok wen Backgroundworker scheiße ist, wie siehts aus mit neuem Threads?
    Wie jetzt - du zeigst 758.372 Datensätze in einem DGV an (bist du noch zu retten?)

    Mit Threads wirst du bei DGV scheitern, weil DGV ist ein Control, und da kannst du aus einem Nebenthread garnet drauf zugreifen.

    Aber eine so aufwändige Verarbeitung gehört eh in ein typisiertes Dataset. Da kannst du dann eine BindingSource oder auch ein DataView auf die DataTable setzen, und einen Filter setzen, etwa

    VB.NET-Quellcode

    1. BindingSource.Filter = "Spalte1 = 1"
    , und dann liefert die BindingSource nurnoch die Datensätze, die dem Kriterium entsprechen.

    gugge DataExpressions

    Wenn du typDataset allerdings noch garnet kennst, müssteste dir dieses KnowHow erst noch aneignen, etwa "DatasetOnly" auf Movie-Tuts durcharbeiten, oder gleich "Datenbank in 10 Minuten" auf Movie-Tuts - weil du holst die Daten ja aus einer DB.
    Ok habe mit der Projektleitung gesprochen. Das Thema mit DataGrid ist durch :D. Nun darf ich doch SQL benutzen, was alles sehr angenehmer macht.. Ist echt mist wenn man Projektvorgaben hat und sich an diese richten muss was benutzt wird und nicht :/