【问题标题】:DataGridView / DataTable | rowState doesn't change数据网格视图 / 数据表 | rowState 不会改变
【发布时间】:2012-05-21 04:19:43
【问题描述】:

我在将数据绑定到 DataGridView 时遇到问题。

我有一个继承自 DataGridView 的类 MyDataGridView。我的数据网格视图数据源是一个 BindingSource 对象,其中包含一个 DataTable 作为数据源。

问题是,当我通过(我的)DataGridView 对象进行更改时 - rowState 保持在“未修改”而不是已修改;即使 DataTable 中的值发生了变化(这就是我的更新不起作用的原因,因为它将 rowState 视为未定义)。请注意,直接对 DataTable 进行更改可以正常工作。

谢谢(:

【问题讨论】:

  • “当我通过(我的)DataGridView 对象进行更改时” - 您是否以编程方式进行这些更改?
  • 不,通过控件。如果我像这样以编程方式进行更改: myDataTable.rows[0][0] = "new string" - 它会更改 rowState。我认为问题与绑定有关。

标签: c# datagridview datatable bindingsource rowstate


【解决方案1】:

您必须调用包含网格的表单的 Validate 方法。此方法对网格的影响就像您将焦点移动到网格中的另一行一样。

【讨论】:

    【解决方案2】:

    好的,所以在使用 google 之后,我发现调用 DataTable.Rows[index].EndEdit() 可以解决问题。我不确定我是否应该这样做,但它解决了问题。 (为了调用该方法,我使用 DataGridView.CellEndEdit 事件)。

    【讨论】:

      【解决方案3】:

      您能告诉我们 MyDataGrdView 类的代码吗?

      我想我已经知道解决方案了: 您必须重新绑定数据源,以便控件知道何时更新

      每次更改数据源时,请致电DataGridView.DataBind();。 您也可能必须对 DataTable 执行此操作。

      【讨论】:

      • 这并不容易,因为它在另一台计算机上,但这里有一些重要的部分:codepaste.net/t5y9yy。没有得到您的解决方案 - 重新绑定?!我在 datagridview/datatable 中找不到那个 DataBind。谢谢(:
      猜你喜欢
      • 2021-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多