我正在尝试将选定的项目从我的DataGrid
转移到我的DataTable
,以便与另一个DataGrid
绑定。我将行导入到DataTable
中,如下所示:
DataRowView row = (DataRowView)firstDataGrid.SelectedItems[0]; //Picking the first one as an example
myDataTable.ImportRow(row.Row);
我的DataTable
绑定了我的其他DataGrid
,如下所示:
<DataGrid x:name="secondDataGrid" ItemsSource="{Binding myDataTable}"> //This is not the same data grid from above
我有一个按钮,该按钮绑定到如下执行第一段代码的命令:
<ButtonCommand="{Binding DoFirstChunkOfCodeCommand}" CommandParameter="{Binding ElementName=firstDataGrid}"></Button>
但是,当我对其进行测试时,最终只向我的第二个DataGrid
添加了空行,我通过以下方式确认row.Row
不为空:
MessageBox.Show(row.Row["SomeColumn"].ToString());
最终打开了一个包含正确值的消息框。那么,为什么当该行不为null时又将空行添加到我的dataGrid中呢?
答案 0 :(得分:0)
事实证明,在导入行之前,必须先将列添加到DataTable
中,如下所示:
DataColumn column;
//Repeat this chunk for each column, changing DataType and ColumnName as neccessary
column = new DataColumn();
column.DataType = Type.GetType("System.String");
column.ColumnName = "col1";
myDataTable.Columns.Add(column);
这将使ImportRow()方法发挥预期的作用。