RowLeave上的Datagridview没有为布尔值分配适当的值

时间:2009-07-23 13:05:30

标签: .net events datagridview boolean

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

如果我只更新一个文本字段,当我访问基础DataSource时,我得到了我输入的最新值,如果我访问布尔值,则买,我得到之前的值。

我正在访问这样的行:

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一样,所以这不是问题。)

有什么想法吗?

编辑:我已将问题缩小到适当的事件调用。似乎 RowLeave EndCellEdit 之前被调用,甚至 CellValueChanged 。因此,该行永远不会获得状态更新(在DB中更新)并且不会执行此操作。我可以更改这些事件的顺序(以便正常工作)吗?我发现这是一个known issue,应该在Orcas中改变,但他们从未这样做过。

1 个答案:

答案 0 :(得分:3)

好的,有一个解决方法。

检查后需要更新:

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

我做了一个CommitEdit来应用单元格的更改(由于上述错误,事件尚未发生)

        dgView.CommitEdit(0);

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