DataGridView auslesen und in Array laden... inkl. leere Zeilen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von AnnoBoy78.

    DataGridView auslesen und in Array laden... inkl. leere Zeilen

    Einen wunderschönen Guten Morgen ab die VB Experten,

    ich hänge da an ein Problem wo ich einfach nicht mehr weiter weiss,, habe auch schon geGoogelt, aber alles ohne Erfolg und verstehen tue ich es auch nicht, warum das Programm schlapp macht, bzw. eine Fehlermeldung ausspückt "OutOfRangeException" oder so ähnlich,, habe die Fehlermeldung jetzt nicht gerade vor mir.

    Ich versuche eine vorhandene DataGridView (DGV) Tabelle, die beschrieben ist... eine neu Zeile während das Programm läuft hinzuzufügen.

    Zeile1 | Zeile2 | Zeile3 | Zeile4

    XXXX | XXXX | XXXX | XXXX

    XXXX | XXXX | XXXX | XXXX

    Hier | neue | Text | schreiben

    Nun möchte ich die DGV Tabelle wieder auslesen und in ein ArraySpeichern und hier bricht mein Programm ab, mit der Fehlermeldung

    Wenn ich in meinem QuellCode über die Variablen mit der Maus darüber fahre,, dann wird mir der Inhalt der Variablen angezeigt und das sieht für mich aus, als würde das Programm normal funktionieren. Aber wieso bricht es dann ab....

    Nun bricht es nicht mehr ab, da ich es mit Try abfange... ich hoffe ihr könnt mir da Rat geben.

    Vielen Dank euch im Vorraus, für jede Hilfreiche Antwort.

    Gruß NewBe AnnoBoy

    QuellCode Snipsel:

    Public

    Dim ArrUniversal as String() = {0}
    Dim ArrCD as String() = {0}

    Private Sub DGV_CellValueChanged(....)
    Dim i as integer = 0

    Try

    For i = 0 to DGV.Rows.Count - 1

    ArrUniversal(i)=DGV.Item(0,i).Value & ";" & DGV.Item(1,i).Value & ";" & DGV.Item(2,i).Value & ";" & DGV.Item(3,i).Value

    next i

    Catch ex As Exception

    MsgBox ("OutOfRangeException..")

    End Try

    DGv.Refresh()

    For i= 0 to ArrUniversal.Length -1

    ListBox1.Items.Add(ArrUniversal(i) & " " & i & " " & DGV.Rows.count))

    ArrCD = ArrUniversal.Clone

    end if

    Eud Sub
    Hallo Tulla,

    ich möchte euch jetzt hier nicht verwirren,, danke auch für deine Antwort.

    Wenn ich heute Abend daheim bin schicke ich euch den Code formatiert zu.

    Also in meiner richtigen Tabelle sind 6 Eintragungen vorhanden und möchte gerne an der siebten Zelle was eintragen!

    Ich habe auch mit DGV.Rows.Count -2 und -3 herum experimentiert, doch leider alles ohne Erfolg!

    Das gleiche auch,,, mit For i= 0 to ArrUniversal.Length -1



    Wie dem auch sei,, danke ich euch allen für eure Hilfe, aber ich sehe,, das es besser ist,, wenn ich euch die Tabelle in Grafik zeige,, den Code sowie die Fehlermeldung mitteile, damit kein wirrwar dazu kommt.

    Vielen lieben Dank, bis heute abend Anton
    So da bin ich wieder.... nun muss ich mal schauen wie ich das alles hier eingeben kann,,,Guten Abend,

    so, nun besteht mein Problem, ich habe euch mal die Tabelle als ScreenShots geschickt,, die Tabelle möchte ich immer und immer wieder erweitern,, und diese Tabelle in einem Array (ArrUniversal) kopieren.

    Aber wenn ich in der leeren Zeile etwas eingebe und zur nächsten Spalte gehen, dann bricht das Programm ab mit der Fehlermeldung "OutOfRangeException" das ich mit dem Try abfange.

    Hier mal der QuellCode in VB2010... hoffe ihr könnt mir behilflich sein das Problem zu lösen.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim ArrUniversal As String() = {0}
    3. Private Sub DGV_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV.CellValueChanged
    4. Dim i As Integer = 0
    5. ListBox1.Items.Add("Nein keine Suche")
    6. ListBox1.Items.Add(DGV.Rows.Count)
    7. TryFor i = 0 To DGV.Rows.Count - 1ArrUniversal(i) = DGV.Item(0, i).Value & ";" & DGV.Item(1, i).Value & ";" & DGV.Item(2, i).Value & ";" & DGV.Item(3, i).Value
    8. ListBox1.Items.Add(ArrUniversal(i))
    9. Next
    10. Catch ex As ExceptionMsgBox("OutOfRangeException")
    11. End Try
    12. ListBox1.Items.Add(ArrUniversal.Length)For i = 0 To ArrUniversal.Length - 1
    13. ListBox1.Items.Add(ArrUniversal(i) & " " & i & " " & DGV.Rows.Count)
    14. Next
    15. End If
    16. ArrCD = ArrUniversal.Clone
    17. End Sub
    18. End Class


    Es tut mir leid, das ich ausversehen einen neuen Thread eröffnet habe.

    Anton
    Bilder
    • _VB_tabelle.jpg

      45,59 kB, 800×568, 193 mal angesehen
    • _VB_tabelle2.jpg

      58,03 kB, 800×568, 198 mal angesehen
    Die Exception wird aufgrund Deiner Array Deklaration Dim ArrUniversal As String() = {0} ausgelöst. So hat das Array nur Platz für genau 1 Element (btw. 0 ist kein String).

    Nimm eine List(of String), dieser kannst Du beliebig neue Elemente hinzufügen oder per List.Clear löschen.

    Warum möchtest Du die Elemente unbedingt als String sichern ? Normalerweise geht man den umgekehrten Weg: eine Liste/Dataset mit Daten die per Databinding an das GridView gebunden werden.