在对数据网格进行排序时对其进行搜索
本文关键字:搜索 排序 数据 网格 数据网 | 更新日期: 2023-09-27 18:31:48
>我实现了一个简单的搜索函数,它根据搜索查询突出显示 DataGrid 中的一行。它的要点如下所示:
public bool scrollToSearch(string query) {
dataGrid.SelectedItems.Clear();
for (; searchIndex < registrants.Count; searchIndex++) {
foreach (string field in registrants[searchIndex]) {
if (field.ToLower().Contains(query)) {
dataGrid.SelectedItem = registrants[searchIndex];
dataGrid.ScrollIntoView(registrants[searchIndex]);
searchIndex++;
return true;
}
}
}
}
它在列表中搜索匹配项,然后突出显示(选择)该行并将其滚动到视图中。问题在于,当 DataGrid 排序时,搜索将突出显示看似随机的行而不是第一个结果,因为它正在搜索原始的未排序列表。有没有办法让我在排序列表中搜索它?
我同意Anurag的评论,即ListCollectionView是正确的方法。有关 ListCollectionView 的文档,请参阅此处。ListCollectionView 在源和显示之间创建另一个层,用于处理排序、过滤和分组。将 DataGrid 绑定到 ListCollectionView 并使用 SetCurrent()
指定所选项。
首先要这样做....
var view = CollectionViewSource.GetDefaultView(registrants);
然后在代码中使用 view
代替registrants
。