首页 > 解决方案 > 将行从 DataTableA 移动到 DataTableB 并更新到 Datarow

问题描述

我的应用程序有两个列表视图 L1 和 L2,分别由数据表 D1 和 D2 界定。每个 Datatable 有 5 列,顺序和名称相同,在 Column1 上有一个 primaryKey。我希望能够通过与应用程序上的 L1 和 L2 的行单击交互来编辑有界数据表;具体来说,如果用户单击 L1 上的一行(fullrowselect = True):

  1. 从 L1 获取 DataRow R1
  2. 编辑 R1 的 PromaryKey 值等于 1 + Max(L2.col1) 以确保唯一性 - 产生 R1X
  3. 从L1中删除原来的R1
  4. 将 R1X 添加到 L2
  5. 刷新两个列表视图以反映更改

我正在使用 D2.Add(R1)。这与使用 D2.Rows.Add(R1X.ItemArray) 有什么关系吗?

我收到的错误是“此行已经属于另一个表”。我确保在将 R1X 插入 D2 之前先尝试从 D1 中删除 R1。

标签: vb.netlistviewdatatabledatarow

解决方案


更新:

使用 ImportRow 以及利用数据库来规划主键,这样就不会有重复的机会,然后下面的代码就可以工作了:

Dim HostRow As DataRow = D2.Rows.Find(SomeId)
        'Insert the dr into both target Tables
        D1.ImportRow(D2.Rows.Find(SomeId))
        'Delete the reference record from the host table
        D2.Rows.Remove(HostRow)

谢谢大家。


推荐阅读