【发布时间】:2018-09-25 18:58:10
【问题描述】:
我正在创建一个 WPF 应用程序。有一个DataGrid 显示我的项目和搜索栏以过滤数据。如您所知,我们不能将 Dataable 中的特定行从另一个数据表中引用。所以我现在过滤的方式是克隆我的原始数据库并将与搜索栏文本匹配的行添加到克隆的数据表中。之后将数据网格的ItemsSource 设置为克隆的数据表以显示过滤后的行。
现在的问题是,当我用过滤后的行编辑我的数据网格时,显然克隆的数据表正在被修改,而不是原始数据表。那么我怎样才能在原始数据表中进行这些更改呢?
我尝试从原始数据表中引用行,但这是不可能的,因为内存中的一个 DataRow 只能有一个容器,在这种情况下是原始数据表。
编辑
答案很简单,而不是使用 2 DataTable 使用专门为此目的设计的 DataView。请参阅下面的修改代码。
我的过滤逻辑:
var filteredTable = dt.Clone();
foreach( DataRow row in dt.Rows)
{
if(row[FilterCategory].ToString().StartsWith(txtb_search.Text))
{
filteredTable.Rows.Add(row.ItemArray);
}
}
ItemsGrid.ItemsSource = filteredTable.DefaultView;
【问题讨论】:
-
你为什么不使用 DataView?
-
@NewContributor 我多么天真我不知道这一点。这正是我想要的。我将很快发布带有修改代码的答案。
标签: c# datagrid datatables