gpt4 book ai didi

c# - 当搜索框中的字符串为空时,CollectionViewSource 不填充数据网格

转载 作者:行者123 更新时间:2023-11-30 23:04:44 24 4
gpt4 key购买 nike

我正在使用 collectionviewsource 在我的 wpf 应用程序中搜索数据网格。我正在使用 Entity Framework 从数据库填充我的数据网格。除了搜索功能,一切正常。我正在使用 textchanged 事件和 collectionviewsource 从数据网格项目源中搜索文本。发生的事情是我可以进行搜索,而数据网格在搜索框(这里的搜索框是文本框)中键入时过滤数据,但是当清空搜索框时,数据网格必须填充所有行,但这是我遇到的问题。它显示了最后一个搜索过滤器。这是下面的代码。请大家帮帮我..

private void txtSearch_TextChanged(object sender, TextChangedEventArgs e)
{
if (txtSearch.Text != String.Empty)
{
textSearch = sender as TextBox;
filterText = textSearch.Text;

var cv = CollectionViewSource.GetDefaultView(dgDetailedRecordList.ItemsSource);

if (filterText != null)
{
cv.Filter = o =>
{
var emp = o as DetailedReportInventoryTableItems;
return (emp.product_name.ToLower().ToString().Contains(filterText.ToLower().ToString())
|| emp.emp_no.ToLower().ToString().Contains(filterText.ToLower().ToString())
);
};
}
}
}

最佳答案

问题可能出在已分配的过滤器上。如果txtSearch.Text,您必须重置过滤器是String.Empty .尝试像下面这样修改您的代码:

private void txtSearch_TextChanged(object sender, TextChangedEventArgs e)
{
var cv = CollectionViewSource.GetDefaultView(dgDetailedRecordList.ItemsSource);
if (txtSearch.Text != String.Empty)
{
textSearch = sender as TextBox;
filterText = textSearch.Text;
if (filterText != null)
{
// Existing filter here
}
}
else
{
cv.Filter = null;
}
}

我还没有测试过代码,所以请让我知道它是否有效。

一些额外的改进说明:

  • .ToLower()返回一个字符串,因此无需附加 .ToString()那里。
  • 如果您不确定 emp.product_name 的数据类型那么你可以使用 .ToString()在那之后不在.ToLower()之后.
  • 所以代码会像emp.product_name.ToString().ToLower().

关于c# - 当搜索框中的字符串为空时,CollectionViewSource 不填充数据网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49173778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com