2016-04-04 12 views
1

Ich habe derzeit eine einzige Suche für 1 Spalte arbeiten. Ich möchte mehrere Spalten zur Suche hinzufügen. So kann ich Student_FName, Student_SName und Student_EmailDataGridView multiple column search

suchen. Unten ist der Code, den ich zurzeit arbeiten habe. Muss ich eine OR-Anweisung hinzufügen? oder gibt es eine andere Möglichkeit, mehrere Reihe inklusive Filter

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); 
       } 
     } 

Antwort

1

Verwenden Auswählen von Datentabelle

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

Okay, dank. Lass mich dies versuchen. Wohin würde das gehen und was wird es ersetzen? –

+0

Das funktioniert auch als meine Antwort! –

+0

@Donald Bury, können Sie sich den folgenden Link ansehen und entscheiden, was besser für Sie zu verwenden ist. 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

herausgefunden, dass ich verwenden konnte, was ich derzeit verwendet habe. Gerade hinzugefügt in meiner Vermutung auf Hinzufügen von OR. –