C# 基于LINQ的数据网格视图&x27;s是“;“断开连接”;从LINQ表达式?
我有一个用C# 基于LINQ的数据网格视图&x27;s是“;“断开连接”;从LINQ表达式?,c#,linq,datagridview,datatable,C#,Linq,Datagridview,Datatable,我有一个用LINQ创建的DataView,连接到DataGridView。当我在DataGridView中更改值时,会立即执行LINQ表达式,并在我的DataView中更改结果 是否有方法将DataGridView从LINQ脚本“断开”以抑制DataView中的更改 void MyFunc() { DataGridView myGrid; DataTable myTable; // filling the table // assigning the tabl
LINQ
创建的DataView
,连接到DataGridView
。当我在DataGridView
中更改值时,会立即执行LINQ
表达式,并在我的DataView
中更改结果
是否有方法将DataGridView从LINQ脚本“断开”以抑制DataView中的更改
void MyFunc()
{
DataGridView myGrid;
DataTable myTable;
// filling the table
// assigning the table to the grid
myGrid.DataSource = myTable;
// filtering DataTable with LINQ
var filteredRows = (from DataRow in myTable.AsEnumerable()
where (...)
select (row));
// assigning the result to the DataGrid
myGrid.DataSource = filteredRows.AsDataView();
...
}
执行/迭代查询并使用
CopyToDataTable
获取新的数据表,然后将其分配为DataSource
var filteredRows = (from DataRow in myTable.AsEnumerable()
where (...)
select (row)).CopyToDataTable();
DateGridView.DataSource = filteredRows;
这将导致一个临时的DataTable
成为网格的源,并与LINQ表达式断开连接。
稍后,您可以从
数据源
获取数据表
,并进行更新 你的意思是:推迟更新?您确实想更新它们,但不是现在,不是吗?尝试CopyToDataTable
而不是AsDataView
是的,我想推迟更新@Daniel:我必须删除行。当我使用表的副本时,我必须手动删除原始表中的行。我必须删除行。当我使用表的副本时,我必须手动删除原始表中的行。@boboes,是的,这是您为断开连接模式支付的费用。好的,因此我将复制LINQ筛选器中使用的字段。第一个将显示,其他将隐藏。用户更改显示的字段,并使用“更新”按钮将可见字段转换为隐藏字段一次,然后执行LINQ。对我来说,似乎比手动同步表要好。谢谢大家:)