在我的 winforms 应用程序中,我有一个文本框,可以在输入时过滤数据网格(输入时搜索),这很好用,我还有另一个按钮可以通过两个组合框应用过滤器。
此按钮将连接到 datagridview 的数据表复制为数据源,并将 datagridviews 数据源更改为数据表的副本。
当通过按钮应用此过滤器时,我使另一个按钮可见(称为 btnRemoveFilterFserie),以通过将数据源更改回原始数据表来“删除”过滤器。
当 btnRemoveFilterFserie.Visible == true 时,表示应用了其他过滤器,我想在 DS1Filter3 数据表上键入时应用搜索,但它返回一个错误,即在此行上找不到 [Description] 列
DataRow[] result = DS1Filter.Select(outputInfo);
我希望理解我的解释不会令人困惑。
这是我使用的代码。
private void txtFserieSearch_KeyUp(object sender, KeyEventArgs e)
{
string outputInfo = "";
string[] keyWords = txtFserieSearch.Text.Split(' ');
foreach (string word in keyWords)
{
if (outputInfo.Length == 0)
{
outputInfo = "(Description LIKE '%" + word + "%' OR `Function Value` LIKE '%" +
word + "%')";
}
else
{
outputInfo += " AND (Description LIKE '%" + word + "%' OR `Function Value` LIKE '%" +
word + "%')";
}
}
if (btnRemoveFilterFserie.Visible == true)
{
//Applies the filter to the DataView
DataRow[] result = DS1Filter.Select(outputInfo);
DataTable DS1Filter3 = DS1Filter.Clone();
foreach (DataRow row in result)
{
DS1Filter3.ImportRow(row);
}
dataGridFserie.DataSource = DS1Filter3;
}
else if (btnRemoveFilterFserie.Visible == false)
{
DataRow[] result = DS1.Select(outputInfo);
DataTable DS1Filter2 = DS1.Clone();
foreach (DataRow row in result)
{
DS1Filter2.ImportRow(row);
}
dataGridFserie.DataSource = DS1Filter2;
}
}