2014-04-06 5 views
-1

Я пытаюсь выполнить поиск в каждой ячейке в моем документе datagridview для значения «test». Однако он ищет только первую строку ... (я считаю, что он ищет все столбцы). Любые идеи о том, как я могу это исправить?datagridview только ищет первую строку

dataGridView1.SelectionMode = DataGridViewSelectionMode.CellSelect; 
      string searchValue = "test"; 

      int searching = -1; 
      while (searching < 7) 
      { 
       searching++; 
       try 
       { 
        foreach (DataGridViewRow row in dataGridView1.Rows) 
        { 
         if (row.Cells[searching].Value.ToString().Equals(searchValue)) 
         { 

          row.Cells[searching].Selected = true; 
          break; 
         } 
        } 
       } 
       catch (Exception exc) 
       { 
        // MessageBox.Show(exc.Message); 
       } 
      } 
+0

Вместо проводки, что вы «верить», что происходит, поместите точку останова на 'while' заявление и пошагово код для проверки того, что на самом деле происходит. Трудно сказать, что может быть неправильным с вашим кодом, не имея возможности запустить его против фактических данных. Это _looks_ как должно работать ... –

ответ

0

использование этот фрагмент .. в основном мы перебирать все строки/столбца и установите его значение в качестве выбора, если мы находим матч.

dataGridView1.SelectionMode = DataGridViewSelectionMode.CellSelect; 
string searchValue = "test"; 

for (int row = 0; row < dataGridView1.Rows.Count; ++row) 
{ 
for (int col = 0; col < dataGridView1.Columns.Count; ++col) 
{ 
    var cellValue = dataGridView1.Rows[row].Cells[col].Value; 

    if (cellValue != null && cellValue.ToString().Equals(searchValue)) 
    { 
    dataGridView1.Rows[row].Cells[col].Selected = true; 

    // if you want to search every cell for the searchValue then you shouldn't break. 
    // break; 
    } 
} 
} 

вы также можете сделать выше, следующим образом, используя краткий код LINQ:

dataGridView1.SelectionMode = DataGridViewSelectionMode.CellSelect; 
string searchValue = "test"; 

dataGridView1.Rows.ToList().ForEach(row => row.Cells.ToList().ForEach(cell => 
{ 
cell.Selected = (cell.Value != null && cell.Value.ToString().Equals(searchValue)); 
})); 
+0

это сработало! Благодаря! – user3435528

Смежные вопросы