【问题标题】:Datagridview on RowLeave not assigning proper values to booleansRowLeave 上的 Datagridview 没有为布尔值分配正确的值
【发布时间】:2010-11-13 09:10:20
【问题描述】:

我有一个从查询中的 DataTable 填充到数据库的 DataViewGrid。在尝试捕获 Row_Leave 事件以便我可以正确更新它时,我似乎无法捕获布尔列中的最新值。

如果我只更新一个文本字段,当我访问底层数据源时,我会得到我输入的最新值,如果我访问布尔值,我会得到以前的值。

我正在访问这样的行:

if (allCorrect)
{
    if (((DataRowView)dgView.Rows[e.RowIndex].DataBoundItem).IsNew)
    {                        
       this.InsertEntry((DataRow)((DataRowView)dgView.Rows[e.RowIndex].DataBoundItem).Row);
    }
    else
    {                        
        this.UpdateEntry((DataRow)((DataRowView)dgView.Rows[e.RowIndex].DataBoundItem).Row);
    }
 }

(访问底层行的方式很复杂,但就像访问 DGV 的 DataSource 一样,所以这不是问题。)

有什么想法吗?

编辑:我已将问题范围缩小到正确的事件调用。似乎 RowLeaveEndCellEdit 甚至 CellValueChanged 之前被调用。因此,该行永远不会获得状态更新(要在数据库中更新)并且不会这样做。我可以更改这些事件的顺序(以正常工作)吗?我发现这是一个 known issue,应该在 Orcas 中改变,但他们从来没有改变。

【问题讨论】:

    标签: .net events datagridview boolean


    【解决方案1】:

    好的,找到解决方法了。

    检查是否需要更新后:

            if(!(dgView.IsCurrentCellDirty))
            {
                return;
            }
    

    我执行 CommitEdit 以应用单元格的更改(由于上述错误,尚未发生该事件)

            dgView.CommitEdit(0);
    

    当更新/插入发生时,该行将获得最新的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-09
      • 2018-08-11
      • 2013-09-15
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      相关资源
      最近更新 更多