我目前正在做一个学校项目,我需要知道如何检查datagridview的任何一行是否包含任何列中的特定单词,并隐藏不包含该单词的行,在任何专栏中。 我还没有代码,只有datagridview和表单上的文本框。
答案 0 :(得分:1)
您只想在文本框不为空或空字符串时进行过滤(确保修剪字符串以删除前导和尾随空格)。
(dataGridViewFields.DataSource as DataTable).DefaultView.RowFilter = string.Format("columnname like '%{0}%'", textBoxFilter.Text);
过滤表达式
columnname like '%{0}%'
表示columnname包含特定的单词/字符串。 columnname not like '%{0}%
表示不包含答案 1 :(得分:0)
我假设您使用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);
}
}
事件中,只检查TextBox是否为空。您的活动看起来像这样:
{{1}}
答案 2 :(得分: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
活动或ButtonClick