2017-06-09 5 views
0

Ich mache gerade ein Schulprojekt und ich muss wissen, wie in jeder Zeile der Datagridview ein bestimmtes Wort in einer Spalte enthält, und ausblenden Sie die Zeilen, die das nicht enthalten Wort, in irgendeiner Spalte. Ich habe noch keinen Code, nur die Datagridview und das Textfeld auf dem Formular.Überprüfen, ob DataGridView das spezifische Wort enthält

+0

warum nicht in sql selbst filtern –

+0

ist das was du suchst nach? https://stackoverflow.com/questions/5843537/filtering-datagridview-without-changing-datasource – grepLines

+0

@BhubanShrestha, weil das Ziel ist es, die Datagridview mit allem zu füllen und wenn der Benutzer will, wird er in der Lage sein zu filtern, um einige Datensätze leicht zu finden –

Antwort

1

Sie nur filtern möchten, wenn die Textbox NICHT nicht null oder eine leere Zeichenfolge (stellen Sie sicher, dass Sie die Zeichenfolge trimmen Leerraum zu entfernen, vordere und hintere) ist.

(dataGridViewFields.DataSource as DataTable).DefaultView.RowFilter = string.Format("columnname like '%{0}%'", textBoxFilter.Text); 
  • Filterausdrücke

    • columnname like '%{0}%' bedeutet Spalten bestimmten Wort/String enthält.
    • columnname not like '%{0}% bedeutet NICHT
0

Ich gehe davon aus, dass Sie DataTable als verwenden. Wenn Sie TextBox.Text als RowFilter übergeben und löschen, wird es eine leere Zeichenfolge.

Überprüfen Sie im TextChanged Ereignis, ob die TextBox leer ist. Ihre Veranstaltung würde wie folgt aussehen:

private void textBoxFilter_TextChanged(object sender, EventArgs e) 
{ 
    if(!string.IsNullOrWhiteSpace(textBox1.Text)) 
    { 
     (dataGridViewFields.DataSource as DataTable).DefaultView.RowFilter = string.Format("Field = '{0}'", textBoxFilter.Text); 
    } 
} 
0

Sie benötigen enthält die Zeilen und Zellen alle, iterieren und blenden Sie die Zeile, wenn Ihr Keyword in einer Zelle gefunden,

private void HideRow(string word) 
{ 
    foreach (DataGridViewRow row in dataGridView1.Rows) 
    { 
     foreach (DataGridViewCell cell in row.Cells) 
     { 
      var value = Convert.ToString(cell.Value); 
      if (word != value) 
      { 
       row.Visible = false; 
       break; 
      } 
     } 
    } 
} 

nennen diese Methode überall dort, wo Sie wollen, auf TextChanged Event oder ButtonClick

+0

Row.visible = false verursacht Currencymanager-Ausnahmen. Sie möchten zuerst die .Currentcell auf NULL setzen. – Luke

Verwandte Themen