【问题标题】:Select/Decelect Row in DataGridView在 DataGridView 中选择/取消行
【发布时间】:2015-11-16 11:34:00
【问题描述】:

我正在尝试将数据插入/更新到 DataGridView,但遇到了一个小问题。

DataGridView中的某些单元格带有日期和开始时间(日期时间)。 现在我要做的是,当按下按钮时,应该搜索当前日期,选择行,然后应该读取开始时间,并使用当前时间计算 TimeSpan。

现在我只是试图让选定的行取出开始时间单元格的数据。

var Today = DateTime.Now.ToShortDateString();

        dataGridView1.SelectedRows.Clear();

        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            if (row.Cells[0].Value.Equals(Today))
            {
                row.Selected = true;
            }
        }

但这给了我一个错误,即列表是只读的......我不确定我在这里做错了什么?

因此,如果有人可以帮助我解决此问题或给我有关如何解决此问题的提示,我将不胜感激。

在此先感谢大家。 :)

【问题讨论】:

  • 哪一行给你一个错误?
  • @Ivan Stoev 感谢您的评论。行“dataGridView1.SelectedRows.Clear();”并且“if (row.Cells[0].Value.Equals(Today))”给出错误。
  • @scitch 错误不在if语句中,是因为调用dataGridView1.SelectedRows.Clear();

标签: c# database winforms select datagridview


【解决方案1】:

如果您尝试使用 dataGridView1.SelectedRows.Clear(); 清除 DataGridView 中的选择,您将收到异常:Operation not supported. Collection is read-only.

要清除选择,您可以使用ClearSelection 方法:

dataGridView1.ClearSelection();

【讨论】:

  • 非常感谢!现在我只得到对象引用未指定给对象实例的错误......:-/
  • 您应该使用断点检查什么是空的。也许您的 row.Cells[0] 对于某些行为空,您在哪里收到错误?
  • 我在“if (row.Cells[0].Value.Equals(Today))”语句中得到错误。我通过使用断点获得的值都在那里。 16.11.2015 for row.Cells[0].Value 和 16.11.2015 for Today...
  • 所以问题似乎是我所说的,有些行在第一个单元格中有空值,您需要进行空值检查。例如foreach的第一行,你可以写`if(row.Cells[0].Value==null) continue;
  • @sksallaj 这是SelectedRows 集合,它是只读的,它是这样实现的。
猜你喜欢
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 2023-04-01
  • 2011-07-25
  • 2011-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多