我对此代码有疑问,我使用bindingsource来显示数据,此代码仅在我在datagridview中搜索时选择行。我想知道如何过滤搜索数据。
private void button1_Click(object sender, EventArgs e)
{
string searchValue = textBox1.Text;
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
try
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells[2].Value.ToString().Equals(searchValue))
{
row.Selected = true;
break;
}
}
}
catch (Exception exc)
{
MessageBox.Show(exc.Message);
}
}
答案 0 :(得分:7)
如果您只想显示已过滤的行,请使用BindingSource.Filter
属性。
以下是MSDN
bindingSource.Filter = "columnname = 'value'";
private void button1_Click(object sender, EventArgs e)
{
string searchValue = textBox1.Text;
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
bindingSource.Filter = string.Format("{0} = '{1}'","YourColumnName", searchValue );
//here you can do selection if you need
}
要删除过滤器,请使用以下
bindingSource.RemoveFilter();
或
bindingSource.Filter = null;
答案 1 :(得分:1)
在不改变代码的情况下,您可以将row.Visible
属性设置为false
,而不是仅仅更改row.Selected
。无论如何,上面的答案更高效,更干净,你应该试试。