我有一个DataTable
,其中装有来自SQL Server的数据。
我正在尝试将DataTable
复制到DataGrid
而不使用ItemsSource
。目前,我可以使用循环来复制列。
Private Pages.PageGainLoss gridCreator(DataTable dt)
{
var DT = dt;
Pages.PageGainLoss gainLoss = new Pages.PageGainLoss();
foreach(DataColumn dC in DT.Columns)
{
var col = new DataGridTextColumn();
col.Header = dC.ColumnName;
gainLoss.dataGrid.Columns.Add(col);
}
foreach(DataRow dR in DT.Rows)
{
gainLoss.DataGrid.Items.Add(dR)
}
return gainLoss;
}
但是我似乎无法弄清楚要复制行的循环。它将空行复制到我的数据网格中。
额外:
之所以使用这种方法,是因为我正在使用一个类来创建一个Page
,该类包含一个DataGrid
并填充DataGrid
,然后将其显示在主页上的框架中。但是当我使用gainLoss.dataGrid.ItemsSource = dt.DefaultValue;
时,我无法修改DataGrid
或更改其属性(例如列宽或颜色),因为它表示该列不存在。
答案 0 :(得分:1)
您需要设置Binding
的{{1}}属性:
DataGridTextColumn
您还应该将foreach (DataColumn dC in DT.Columns)
{
var col = new DataGridTextColumn();
col.Header = dC.ColumnName;
col.Binding = new Binding(dC.ColumnName); //<--
gainLoss.dataGrid.Columns.Add(col);
}
添加到DataRowViews
:
DataGrid