3

このコードに関して質問があります。バインディングソースを使用してデータを表示します。このコードは、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);
         }
    }
4

2 に答える 2

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;
于 2013-08-15T13:34:36.377 に答える
1

コードをそれほど変更せずに、 を変更するだけでなく、row.Visibleプロパティをに設定できます。とにかく、上記の答えはよりパフォーマンスが高く、クリーンです。試してみてください。falserow.Selected

于 2013-08-15T13:43:26.870 に答える