datagridview只搜索第一行

时间:2014-04-06 22:30:01

标签: c# search datagridview cell

我正在尝试在datagridview中的每个单元格中搜索值" test"。然而,它只搜索第一行...(我相信它正在搜索所有列)有关如何解决这个问题的任何想法?

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

1 个答案:

答案 0 :(得分: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));
}));