在datagridview中搜索并过滤它

时间:2013-08-15 13:24:34

标签: c# datagridview

我对此代码有疑问,我使用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);
         }
    }

2 个答案:

答案 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。无论如何,上面的答案更高效,更干净,你应该试试。