DataGrid WPF ohne DataBinding - Problem beim Setzen von neuen Zeilen

  • VB.NET

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

    DataGrid WPF ohne DataBinding - Problem beim Setzen von neuen Zeilen

    Halli Hallo,

    ich habe mal wieder folgendes Problem. Muss mich mit einem DataGrid auseinandersetzen.

    Hier mal mein Code:

    VB.NET-Quellcode

    1. 'FALL 1:
    2. 'Dim dt2 As New DataTable()
    3. ''Columns erstellen
    4. 'Dim column2 As DataColumn
    5. 'column2 = New DataColumn()
    6. 'column2.DataType = Type.[GetType]("System.String")
    7. 'column2.ColumnName = "Spalte 1"
    8. 'dt2.Columns.Add(column2)
    9. 'column2 = New DataColumn()
    10. 'column2.DataType = Type.[GetType]("System.String")
    11. 'column2.ColumnName = "Spalte 2"
    12. 'dt2.Columns.Add(column2)
    13. ''Rows befüllen
    14. 'For i As Integer = 0 To 9
    15. ' Dim row As DataRow = dt2.NewRow()
    16. ' row("Spalte 1") = i.ToString()
    17. ' row("Spalte 2") = DateTime.Now.ToString()
    18. ' dt2.Rows.Add(row)
    19. 'Next
    20. ''DataGrid füllen
    21. 'bdgAnlegen.DataSource = dt2.DefaultView
    22. 'FALL 2:
    23. 'Kann ja nicht klappen, weil keine Spalten definiert sind.
    24. 'Dim dt3 As New DataTable
    25. 'Dim row3 As DataRow = dt3.NewRow
    26. 'row3(1) = "Test"
    27. 'dt3.Rows.Add(row3)
    28. 'bdgAnlegen.DataSource = dt3.DefaultView


    Zu Fall 1:
    Das klappt ja. Aber ich habe meine Spalten über den Designer erstellt. Muss ich denn die Spalten per Code erzeugen?

    Zu Fall 2:
    Kann ja nicht klappe. Siehe Kommentar.

    Also, gibt es eine Möglichkeit an das DataTable des DataGrid irgendwie ranzukommen(so Marke: getDataTable)...ihr versteht schon was ich meine, oder?

    Um Hilfe wird gebeten...:-)

    Viele Grüße
    Trigoor
    So funktioniert WPF nicht.
    Du mußt dir Datentypen proggen, mit geeigneten Properties, an die du die Wpf-Controls binden kannst. DataTable ist ungeeignet. MVVM-Pattern ist die Devise.
    Ein Beispiel zu MVVM (naja, so leidlich): WpfTreeview-Tut.
    Aber das wird nicht ausreichen, dein Prob zu lösen. Im INet gibts aber auch Beispiele zu Datagrid.
    Hallo ErfinderDesRades,

    habe mich jetzt sowieso für ein DataSet entschieden. Bei DataTable wird ja eine komplett neue Tabelle angelegt, und man muss die Spalten dann ja per Code erzeugen. Und da ich eine Tabelle mit einer Checkbox habe und ich ja sowieso Anfänger bin.. :) ..habe ich mich für ein DataSet entschieden.

    VB.NET-Quellcode

    1. Dim drw1 As DataRow
    2. drw1 = DsCC1.TABELLE1_TEMP.NewRow
    3. Dim gd As Guid
    4. drw1("idTABELLE1_TEMP") = gd
    5. drw1(11) = "Foo 1"
    6. drw1("Verwendungszweck") = "Foo 2"
    7. DsCC1.TABELLE1_TEMP.Rows.Add(drw1)
    8. bdgAnlegen.SetDataBinding(DsCC1, "TABELLE1_TEMP", True)


    Es funktioniert auch...soweit...es wird eine neue Row angelegt...nur leider steht weder in Verwendungszweck, noch in Spalte 11 etwas drin. ?(

    EDIT: Der Link ist gut. Falls ich mich mal mit einem Tree auseinandersetzen muss....werde ich mich an das Tutorial halten. :thumbsup:

    Viele Grüße
    Trigoor
    Nun ja...ich habe mal wieder etwas herum gespielt. :rolleyes:

    Über Datenquellen kann man, wie gewohnt, das DataGrid per Drag&Drop in das Formular ziehen...und dann klappt auch das auch...und es steht wenigstens was in der Row drin. :)

    Und ne Checkbox hineinzufrimmeln über den Designer werde ich wohl hinkriegen. :!: :?: :!:
    Wenn nicht...gehe ich Euch mal wieder auf den Wecker!! ^^

    Trotzdem Danke..!!!

    Ich setze das Thema mal auf erledigt.

    Viele Grüße
    Trigoor

    Trigoor schrieb:

    Über Datenquellen kann man, wie gewohnt, das DataGrid per Drag&Drop in das Formular ziehen...und dann klappt auch das auch...

    Pest! - das geht ja doch!
    Vornem Jahr hatte ich endlos daran herumgewurstelt, und mich schließlich frustriert von typ. Dataset in Wpf abgewandt.

    Ich glaub, das Prob war, dassich diese Xaml-Formulierung

    XML-Quellcode

    1. DataContext="{x:Static my:MainModel.Root}"
    noch nicht kannte, und so konnte ich nur an DataTables binden, wenn sie lokal in den Resourcen waren, und dassis wieder für MVVM NoGo.