C# 检查DataGridView是否包含特定单词

C# 检查DataGridView是否包含特定单词,c#,datagridview,C#,Datagridview,我目前正在做一个学校项目,我需要知道如何检查datagridview的任何一行中是否在任何列中包含特定的单词,并在任何列中隐藏不包含该单词的行。 我还没有代码,只有datagridview和表单上的文本框。我假设您正在使用DataTable作为DataSource 当您将TextBox.Text作为RowFilter传递并清除它时,它将变成一个空字符串 在TextChanged事件中,只需检查文本框是否为空。您的活动将如下所示: private void textBoxFilter_TextCh

我目前正在做一个学校项目,我需要知道如何检查datagridview的任何一行中是否在任何列中包含特定的单词,并在任何列中隐藏不包含该单词的行。
我还没有代码,只有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类似“{0}%”
      表示columnname包含特定的单词/字符串
    • columnname不象“{0}%”
      表示不包含

您只希望在文本框不为null或空字符串时进行筛选(请确保修剪字符串以删除前导和尾随空格)

  • 过滤表达式

    • columnname类似“{0}%”
      表示columnname包含特定的单词/字符串
    • 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。