Hallo zusammen,
ich habe in WPF ein DataGrid namens dataGrid2.
Ich möchte das gesamte DataGrid in ein DataTable ( dt ) überführen / konvertieren, um dann in der Lage zu sein das Table nach Excel zu schreiben bzw. ein anderes DataGrid damit zu füllen.
Mein Problem ist, dass sowohl in Excel als auch in dem aus dt gefülltem DataGrid zwar die Spaltennamen alle korrekt übertragen werden, aber jede Zeile des dataGrid2 ( Item ) komplett in die Zelle der ersten Spalte geschrieben wird und die anderen Zellen unter den restlichen Spalten leer bleiben.
Kann mir jemand vielleicht sagen, was ich im unteren Code ändern muss, damit mein dataGRid2 korrekt geclont wird?
For i As Integer = 0 To dataGrid2.Columns.Count - 1
If dataGrid2.Columns(i).Visibility = System.Windows.Visibility.Visible Then
dt.Columns.Add(dataGrid2.Columns(i).Header.ToStrin g())
End If
Next
Dim myString As String
For index = 0 To dataGrid2.Items.Count - 24 'Step 1
For g = 0 To dataGrid2.Columns.Count - 1
Dim firstRow As DataGridRow = TryCast(dataGrid2.ItemContainerGenerator.Container FromIndex(index), DataGridRow)
If Not firstRow Is Nothing Then
Dim cell As Controls.DataGridCell = TryCast(dataGrid2.Columns(g).GetCellContent(firstR ow).Parent, Controls.DataGridCell)
myString = TryCast(cell.Content, TextBlock).Text
listBox1.Items.Add(myString)
End If
Next
For z = 0 To listBox1.Items.Count - 1
If z = 0 Then
myString = listBox1.Items.Item(z)
myStringArr = myString & ","
row3 = {myStringArr}
ElseIf z > 0 Then
If z < listBox1.Items.Count - 1 Then
myString = listBox1.Items.Item(z)
myStringArr = myStringArr & myString & ","
row3 = {myStringArr}
End If
ElseIf z = listBox1.Items.Count - 0 Then
myString = listBox1.Items.Item(z)
myStringArr = myStringArr & myString
row3 = {myStringArr}
End If
Next
dt.Rows.Add(row3)
listBox1.Items.Clear()
Next
Dim dsDataset2 As DataSet = New DataSet()
dsDataset2.Tables.Add(dt)
dataGrid4.ItemsSource = dsDataset2.Tables(0).DefaultView
Danke und Grüße
ich habe in WPF ein DataGrid namens dataGrid2.
Ich möchte das gesamte DataGrid in ein DataTable ( dt ) überführen / konvertieren, um dann in der Lage zu sein das Table nach Excel zu schreiben bzw. ein anderes DataGrid damit zu füllen.
Mein Problem ist, dass sowohl in Excel als auch in dem aus dt gefülltem DataGrid zwar die Spaltennamen alle korrekt übertragen werden, aber jede Zeile des dataGrid2 ( Item ) komplett in die Zelle der ersten Spalte geschrieben wird und die anderen Zellen unter den restlichen Spalten leer bleiben.
Kann mir jemand vielleicht sagen, was ich im unteren Code ändern muss, damit mein dataGRid2 korrekt geclont wird?
For i As Integer = 0 To dataGrid2.Columns.Count - 1
If dataGrid2.Columns(i).Visibility = System.Windows.Visibility.Visible Then
dt.Columns.Add(dataGrid2.Columns(i).Header.ToStrin g())
End If
Next
Dim myString As String
For index = 0 To dataGrid2.Items.Count - 24 'Step 1
For g = 0 To dataGrid2.Columns.Count - 1
Dim firstRow As DataGridRow = TryCast(dataGrid2.ItemContainerGenerator.Container FromIndex(index), DataGridRow)
If Not firstRow Is Nothing Then
Dim cell As Controls.DataGridCell = TryCast(dataGrid2.Columns(g).GetCellContent(firstR ow).Parent, Controls.DataGridCell)
myString = TryCast(cell.Content, TextBlock).Text
listBox1.Items.Add(myString)
End If
Next
For z = 0 To listBox1.Items.Count - 1
If z = 0 Then
myString = listBox1.Items.Item(z)
myStringArr = myString & ","
row3 = {myStringArr}
ElseIf z > 0 Then
If z < listBox1.Items.Count - 1 Then
myString = listBox1.Items.Item(z)
myStringArr = myStringArr & myString & ","
row3 = {myStringArr}
End If
ElseIf z = listBox1.Items.Count - 0 Then
myString = listBox1.Items.Item(z)
myStringArr = myStringArr & myString
row3 = {myStringArr}
End If
Next
dt.Rows.Add(row3)
listBox1.Items.Clear()
Next
Dim dsDataset2 As DataSet = New DataSet()
dsDataset2.Tables.Add(dt)
dataGrid4.ItemsSource = dsDataset2.Tables(0).DefaultView
Danke und Grüße