代码之家  ›  专栏  ›  技术社区  ›  DCNYAM

Dataset.Copy()不复制新记录的值

  •  0
  • DCNYAM  · 技术社区  · 16 年前

    我有一个包含多个表的数据集。特别是一个表中有一条记录。我正在将另一条记录添加到此datatable,并使用Dataset.Copy()方法将整个Dataset对象复制到另一个实例。

     Dataset2 = DirectCast(Dataset1.Copy(), dsApplication)
    

    现在,我有两排。原来的,一个空白的。如果将空白的一个更改为文本,并再次启动操作,则原始数据集将行显示为文本,但行状态不变,第二个数据集再次为该行空白。

    有人对这种行为有什么解释吗?为什么在Dataset.Copy()操作中没有复制第二行的值?为什么第二行的RowState在添加文本后没有显示为Modified?

    编辑:正在通过datagridview修改原始数据集。如果在datagridview单元格中键入文本后,在启动复制操作之前单击另一行,则可以正常工作。如果我没有单击另一行,那么它将失败。在启动复制操作之前,我调用datagridview.endedit()方法。但这仍然很奇怪,因为即使没有单击另一个单元格,当我调试代码时,原始数据集总是在复制操作之前立即显示正确的值,所以我根本不理解为什么datagridview会有任何影响。

    编辑#2:在调试时,我注意到,如果我更改gridview中的第一个值,RowState会像预期的那样更改为Modified。但是,对于任何其他行,尽管实际值发生更改,RowState仍保持不变。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Tim Cooper    13 年前

    是否调用了DataSet.AcceptChanges()方法?我相信你需要这些改变才能生效。。。

        2
  •  0
  •   DCNYAM    16 年前

    为了使其正常工作,我必须在包含DataGridView的表单上调用Me.Validate()方法,而不是调用DataGridView.EndEdit()。然后,调用BindingSource.EndEdit()方法确保将值传播到基础数据集。这将导致RowState被正确更改为Added或Modified,并且一切都正常工作。

    推荐文章