2017-02-15 3 views
1

Ich habe eine DataGridView1 und der Benutzer kann Infos eingeben, dann durch einen Klick auf eine Schaltfläche3 Ich möchte, dass er nach was auch immer er in einer textBox3 Typ sucht und eine MessageBox sagen, ob die Zeichenfolge gefunden wurde oder nicht in der Datagridview.Wie kann ich in einem dataGridView nach einer bestimmten Zeichenfolge suchen?

Das ist mein Code

private void button3_Click(object sender, EventArgs e) 
    { 
     bool j = false; 
     foreach (DataGridViewRow rows in dataGridView1.Rows) 
     { 

      for (int i = 1; i < rows.Cells.Count; i++) 
      { 
       if(j == false) 
       { 
        if (textBox3.Text == rows.Cells[i].Value.ToString()) 
        { 
         j = true; 
        } 
       } 
       else 
       { 
        break; 
       } 


      } 

     } 



     if (j == true) 
     { 
      MessageBox.Show("It exists!"); 
     } 
     else 
     { 
      MessageBox.Show("It doesn't exist!!"); 
     } 

    } 
+0

Kontrolle dieses http://stackoverflow.com/questions/13173915/search-for-value-in-datagridview-in-a-column – imsome1

+0

I gibt einen Fehler, wenn ich drücken Knopf3! –

+0

Als Reaktion auf Ihr Problem, dass Sie als Antwort geschrieben: Sie müssen überprüfen, ob Cells [i] .Wert null ist, bevor Sie ToString() darauf tun. ToString() kann nicht mit Nullwerten arbeiten. –

Antwort

0
bool j = false; 
    foreach (DataGridViewRow rows in dataGridView1.Rows) 
    { 
     for (int i = 1; i < rows.Cells.Count; i++) 
     { 
      if (textBox3.Text == rows.Cells[i].Value.ToString()) 
      { 
       j = true; 
       break; // No need to continue after finding the result 
      } 
     } 
    } 

    if (j) // j is already a boolean 
    { 
     MessageBox.Show("It exists!"); 
    } 
    else 
    { 
     MessageBox.Show("It doesn't exist!!"); 
    } 
0

Jemand ist man auf eine andere ähnliche Antwort einen Link geschickt, so antwortete ich die dort Frage versehentlich lol ..

Anyways, wird diese Methode Ihnen helfen retreive das DataGridViewCell-Objekt, in dem der Text gefunden wurde. Habe ich nicht getestet wirklich diesen Code

/// <summary> 
    /// Check if a given text exists in the given DataGridView 
    /// </summary> 
    /// <param name="searchText"></param> 
    /// <param name="dataGridView"></param> 
    /// <returns>The cell in which the searchText was found</returns> 
    private DataGridViewCell GetCellWhereTextExistsInGridView(string searchText, DataGridView dataGridView) 
    { 
     DataGridViewCell cellWhereTextIsMet = null; 

     // For every row in the grid (obviously) 
     foreach (DataGridViewRow row in dataGridView.Rows) 
     { 
      foreach (DataGridViewCell cell in row.Cells) 
      { 
       // I did not test this case, but cell.Value is an object, and objects can be null 
       // So check if the cell is null before using .ToString() 

       if (cell.Value != null && searchText == cell.Value.ToString()) 
       { 
        // the searchText is equals to the text in this cell. 
        cellWhereTextIsMet = cell; 
        break; 
       } 
      } 
     } 

     return cellWhereTextIsMet; 
    } 

    private void button_click(object sender, EventArgs e) 
    { 
     DataGridViewCell cell = GetCellWhereTextExistsInGridView(textBox1.Text, myGridView); 
     if (cell != null) 
     { 
      // Value exists in the grid 
      // you can do extra stuff on the cell 
      cell.Style = new DataGridViewCellStyle { ForeColor = Color.Red }; 
     } 
     else 
     { 
      // Value does not exist in the grid 
     } 
    } 
+0

Es kompiliert immer den Fall, in dem es nicht im Raster existiert, auch wenn es das tut !! –

Verwandte Themen