Um Ihre Datagrid in Datentabelle whith Kopfzeile konvertieren können Sie diese Schritte durchführen:
1) schaffen die Methode zum Retrive der Zelle
static public DataGridCell GetCell(DataGrid dg, int row, int column)
{
DataGridRow rowContainer = GetRow(dg, row);
if (rowContainer != null)
{
DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(rowContainer);
DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column);
if (cell == null)
{
dg.ScrollIntoView(rowContainer, dg.Columns[column]);
cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column);
}
return cell;
}
return null;
}
2) eine Iteration durch alle Elemente und übergeben den Inhalt dada Tabelle „Zelle“
private void DataGridToDataTable()
{
DataTable dt = new DataTable();
var j = byte.MinValue;//header row handler
dt.Rows.Add();
foreach (DataGridColumn column in dataGrid1.Columns)
{
dt.Columns.Add(column.GetValue(NameProperty).ToString());
dt.Rows[byte.MinValue][j++] = column.Header;
}
//data rows handler
for (int i = byte.MinValue ; i < dataGrid1.Items.Count; i++)
{
dt.Rows.Add();
for (j = Byte.MinValue; j < dataGrid1.Columns.Count; j++)
{
DataGridCell dgc = GetCell(dataGrid1, i, j);
dt.Rows[i + 1][j] = ((dgc.Content) as TextBlock).Text;
}
}
}
Denken Sie daran, diese Methoden verwenden Sie diese verwenden wird verweisen muss:
using System.Windows.Media;
using System.Data;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
I‘ Ich finde "ItemSource" auf einem C# -Datagrid –
funktioniert perfekt Dank – Sonja