循环访问DataGridView搜索行和列

时间:2017-04-08 11:57:23

标签: windows c#-4.0 datagridview desktop-application desktop

拥有DataGrind在Windows应用程序中启用搜索选项,如Microsoft Excel搜索整个工作表(DataGrid)。

 foreach (DataGridViewRow row in DisplayGridView.Rows)
        {
            foreach (DataGridViewCell cell in row.Cells)
            {
                if (cell.Value == searchValue)
                {
                    cell.Selected = true;
                    break;
                }
            }
       }

我已尝试过上述方法但未获得结果。我恭维这段代码

        foreach (DataGridViewRow row in DisplayGridView.Rows)
        {               
            for (int i = 0; i < DisplayGridView.Columns.Count; i++)
            {
                if (row.Cells[i].Value.ToString().Equals(searchValue))
                {
                    row.Cells[i].Selected = true;
                    break;
                }
            }
        }

但是,如果有人建议代码,结果为null。

1 个答案:

答案 0 :(得分:0)

我假设您没有检查空值。添加这些空值检查似乎可以像您描述的那样工作。在ToString()之后将cell.Value == searchValue方法添加到行Value使比较成功。也不需要休息。

DisplayGridView.ClearSelection();
foreach (DataGridViewRow row in DisplayGridView.Rows) {
  foreach (DataGridViewCell cell in row.Cells) {
    if (cell.Value != null) {
      if (cell.Value.ToString() == searchValue) {
        cell.Selected = true;
      }
    }
  }
}

下一个方法

DisplayGridView.ClearSelection();
foreach (DataGridViewRow row in DisplayGridView.Rows) {
  for (int i = 0; i < DisplayGridView.Columns.Count; i++) {
    if (row.Cells[i].Value != null) {
      if (row.Cells[i].Value.ToString().Equals(searchValue)) {
        row.Cells[i].Selected = true;
      }
    }
  }
}

如果要在单元格字符串中包含搜索字符串时突出显示单元格,则只需将equals方法更改为contains。

DisplayGridView.ClearSelection();
  foreach (DataGridViewRow row in DisplayGridView.Rows) {
    foreach (DataGridViewCell cell in row.Cells) {
      if (cell.Value != null) {
        if (cell.Value.ToString().Contains(searchValue)) {
          cell.Selected = true;
        }
      }
    }
  }

希望这有帮助。