C# 检查DataGridView是否包含特定单词
我目前正在做一个学校项目,我需要知道如何检查datagridview的任何一行中是否在任何列中包含特定的单词,并在任何列中隐藏不包含该单词的行。C# 检查DataGridView是否包含特定单词,c#,datagridview,C#,Datagridview,我目前正在做一个学校项目,我需要知道如何检查datagridview的任何一行中是否在任何列中包含特定的单词,并在任何列中隐藏不包含该单词的行。 我还没有代码,只有datagridview和表单上的文本框。我假设您正在使用DataTable作为DataSource 当您将TextBox.Text作为RowFilter传递并清除它时,它将变成一个空字符串 在TextChanged事件中,只需检查文本框是否为空。您的活动将如下所示: private void textBoxFilter_TextCh
我还没有代码,只有datagridview和表单上的文本框。我假设您正在使用
DataTable
作为DataSource
当您将TextBox.Text
作为RowFilter
传递并清除它时,它将变成一个空字符串
在TextChanged
事件中,只需检查文本框是否为空。您的活动将如下所示:
private void textBoxFilter_TextChanged(object sender, EventArgs e)
{
if(!string.IsNullOrWhiteSpace(textBox1.Text))
{
(dataGridViewFields.DataSource as DataTable).DefaultView.RowFilter = string.Format("Field = '{0}'", textBoxFilter.Text);
}
}
我假设您使用的是
DataTable
作为DataSource
当您将TextBox.Text
作为RowFilter
传递并清除它时,它将变成一个空字符串
在TextChanged
事件中,只需检查文本框是否为空。您的活动将如下所示:
private void textBoxFilter_TextChanged(object sender, EventArgs e)
{
if(!string.IsNullOrWhiteSpace(textBox1.Text))
{
(dataGridViewFields.DataSource as DataTable).DefaultView.RowFilter = string.Format("Field = '{0}'", textBoxFilter.Text);
}
}
您只希望在文本框不为null或空字符串时进行筛选(请确保修剪字符串以删除前导和尾随空格)
- 过滤表达式
表示columnname包含特定的单词/字符串李>columnname类似“{0}%”
表示不包含columnname不象“{0}%”
- 过滤表达式
表示columnname包含特定的单词/字符串李>columnname类似“{0}%”
表示不包含columnname不象“{0}%”
private void HideRow(string word)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
var value = Convert.ToString(cell.Value);
if (word != value)
{
row.Visible = false;
break;
}
}
}
}
在
TextChanged
事件或按钮上,单击您需要迭代所有行和单元格的任何位置调用此方法,
如果在单元格中找到关键字,则隐藏该行
private void HideRow(string word)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
var value = Convert.ToString(cell.Value);
if (word != value)
{
row.Visible = false;
break;
}
}
}
}
在TextChanged
事件或按钮上,无论您想在何处调用此方法,单击为什么不在sql中进行筛选?这就是您要查找的吗@BhubanShrestha,因为它的目标是用所有内容填充datagridview,如果用户需要,他将能够过滤以轻松找到一些记录。通常的方法是过滤grid view数据源(数据表)使用linq并将过滤结果重新指定给网格数据源view@BhubanShrestha问题是我不知道怎么做:\n你能给我代码吗?为什么不在sql中过滤呢?这就是你要找的吗@BhubanShrestha,因为它的目标是用所有内容填充datagridview,如果用户需要,他将能够过滤以轻松找到一些记录。通常的方法是过滤grid view数据源(数据表)使用linq并将过滤结果重新指定给网格数据源view@BhubanShrestha问题是我不知道该怎么做:\n你能给我代码吗?Row.visible=false将导致Currencymanager异常。如果要先将.Currentcell设置为NULL.Row.visible=false,将导致Currencymanager异常。您想先将.Currentcell设置为NULL。