2016-04-04 35 views
1

現在、1つの列に対して1つの検索が行われています。私は検索に複数の列を追加したいと思っています。だから私はStudent_FName、Student_SNameとStudent_Emailを検索することができますDataGridView複数列の検索

以下は、私が現在働いているコードです。 OR文を追加する必要がありますか?または複数行フィルタを含む

private void SearchTxt_TextChanged(object sender, EventArgs e) 
     { 
      try 
       { 

        var bindData = (BindingSource)studentGridView.DataSource; 
        var dataTable = (DataTable)bindData.DataSource; 
        dataTable.DefaultView.RowFilter = string.Format("Student_Username LIKE '%{0}%'", SearchTxt.Text); 
        studentGridView.Refresh(); 

       } 
      catch(Exception ex) 
       { 
        MessageBox.Show(ex.Message); 
       } 
     } 

答えて

1

使用を選択したDataTable

private void SearchTxt_TextChanged(object sender, EventArgs e) 
    { 
     try 
      { 

       var bindData = (BindingSource)studentGridView.DataSource; 
       var dataTable = (DataTable)bindData.DataSource; 
       var rows = dataTable.Select (string.Format("Student_Username LIKE '%{0}%' AND [Some other filter]", SearchTxt.Text)); 

       studentGridView.DataSource = rows.CopyToDataTable() 
       studentGridView.Refresh(); 

      } 
     catch(Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
    } 
+0

からわかりました、感謝の別の方法があります。私はこれを行ってみましょう。これはどこに行き、それが何を置き換えるのでしょうか? –

+0

これも私の答えとして機能します! –

+0

@Donald埋葬、あなたは次のリンクを見て、あなたが使いやすいものを決めることができます。 http://stackoverflow.com/questions/2832304/dataview-rowfilter-vs-datatable-select-vs-datatable-rows-find – ehh

0
private void SearchTxt_TextChanged(object sender, EventArgs e) 
     { 
      try 
       { 

        var bindData = (BindingSource)studentGridView.DataSource; 
        var dataTable = (DataTable)bindData.DataSource; 
        dataTable.DefaultView.RowFilter = string.Format("Student_Username LIKE '%{0}%' OR Student_FName LIKE '%{0}%'", SearchTxt.Text); 
        studentGridView.Refresh(); 

       } 
      catch(Exception ex) 
       { 
        MessageBox.Show(ex.Message); 
       } 
     } 
+0

私が現在使っているものを使うことができることを知りました。 ORを追加すると私の推測に追加されました。 –