使用ImportRow()将DataRowView对象导入到DataTable中显示空行吗?

时间:2019-07-12 17:27:13

标签: c# wpf datatable datagrid

我正在尝试将选定的项目从我的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中呢?

1 个答案:

答案 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()方法发挥预期的作用。