【问题标题】:Looping through DataGridView Search Row and Columns循环遍历 DataGridView 搜索行和列
【发布时间】:2017-04-08 11:57:22
【问题描述】:

在 Windows 应用程序中拥有 DataGrind 启用搜索选项,如 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 任何人都可以建议代码。

【问题讨论】:

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


    【解决方案1】:

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

    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方法更改为包含。

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

    希望这会有所帮助。

    【讨论】:

    • 我发布的代码在我运行时有效。你遇到了什么错误?
    • 没有得到任何错误只是我的光标移动到第一行第一列没有结果提取
    • 那么你应该调试它。在搜索值匹配且单元格设置为选中的位置放置一个消息框。如果您看到消息框并且未选择单元格,则在此之后发生了一些事情。如果您从未看到消息框,则说明未找到搜索字符串。
    • 看看我的搜索代码是不是Fashions并且单元格值是“ASHA PRIYA FASHIONS”那么它是否会搜索该值?
    • 嗯..您是在问字符串是否相等,或者搜索字符串是否包含在字符串中...这是两个不同的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多