【问题标题】:getchanges doesn't return the changes half the timegetchanges 一半时间不会返回更改
【发布时间】:2012-08-20 13:06:18
【问题描述】:

我正在使用与 DataSet/DataTable 绑定的 Xceed 网格。问题是,我需要知道在网格中加载新数据之前是否进行了更改,因此如果我不保存更改,则会丢失更改。

但是DataSetDataTable的函数getChanges([DataRowState])都不是 返回正确的东西:S

我发现有时会调用 dataColumnChangeEvent,但不会调用 dataRowChangeEvent,这些是更改未保存到 getChanges() 函数中的时间。

当我在编辑单元格中单击网格外而不是以任何方式选择网格的另一个单元格时,就会发生这种情况。

另外,我看过rowStateUnchanged,即使数据确实发生了变化:S

有什么想法吗?

【问题讨论】:

    标签: vb.net datatable dataset xceed


    【解决方案1】:

    太棒了!我终于找到了解决办法。

    即使 dataRowChangeEvent 似乎没有被调用(我会在后面解释)

    如果 rowChangeEvent 中唯一的代码是它下面的代码,它可以工作:

    Private Sub RowChanged(ByVal sender As Object, ByVal e As DataColumnChangeEventArgs)
        If e.Row.RowState = DataRowState.Unchanged Then
            e.Row.AcceptChanges()
            e.Row.SetModified()
        End If
    End Sub
    

    我们检查 rowState 是因为我们只能 setModified() 一个未更改状态的行。

    我们执行 AcceptChanges() 是因为只执行 setModified() 会删除已编辑单元格上的更改。

    我们执行 SetModified(0,因为如果不是 AcceptChanges(),则将 RowState 保留为 Unchanged,因此它不会进入表的 getChanges。

    EDIT :这带来了另一个问题,dataAdapter 使用数据行的原始值和当前值进行更新、删除和插入, 执行“acceptChanges”将 OriginalValue 设置为当前值,因此删除和更新不再起作用:(

    --更多--

    当我说它似乎没有进入事件时,那是因为下面的代码:

    Private Sub RowChanged(ByVal sender As Object, ByVal e As DataColumnChangeEventArgs)
        If e.Row.RowState = DataRowState.Unchanged Then
            e.Row.AcceptChanges()
            e.Row.SetModified()
        End If
        MessageBox.Show("hasError=" & IIf(e.Row.HasErrors, "true ", "false ") & _
                        "; action=" & e.ProposedValue)
    End Sub
    

    既不显示消息框也不获取dataTable的getChanges()中的变化...

    还有,只有

    MessageBox.Show("Changing")
    

    而不是之前的消息框,显示消息框,并正确进行更改,但它随后会破坏事件,因此它不会在 newProjectSelected => 没有加载新项目,但它只需要“重新点击”。

    所以,我已经解释了它的行为方式。

    但这太奇怪了,如果有人能解释一下这种行为,我将不胜感激。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      相关资源
      最近更新 更多