【发布时间】:2019-08-01 12:55:44
【问题描述】:
我的应用程序有两个列表视图 L1 和 L2,分别由数据表 D1 和 D2 界定。每个 Datatable 有 5 列,顺序和名称相同,在 Column1 上有一个 primaryKey。我希望能够通过与应用程序上的 L1 和 L2 的行单击交互来编辑有界数据表;具体来说,如果用户点击 L1 上的一行(fullrowselect = True):
- 从 L1 获取 DataRow R1
- 将 R1 的 PromaryKey 值编辑为等于 1 + Max(L2.col1) 以确保唯一性 - 生成 R1X
- 从 L1 中删除原来的 R1
- 将 R1X 添加到 L2
- 刷新两个列表视图以反映更改
我正在使用 D2.Add(R1)。这与使用 D2.Rows.Add(R1X.ItemArray) 有什么关系吗?
我收到的错误是“此行已属于另一个表”。我确保在将 R1X 插入 D2 之前先尝试从 D1 中删除 R1。
【问题讨论】:
-
如果这是 WinForms,您几乎可以肯定使用
DataGridView控件而不是ListView控件。然后,您可以实际绑定数据。至于复制数据,看ImportRow方法。 -
好的,我将不得不研究该方法。您如何在 DataRow 上回答上述问题 2?
-
让您的数据库处理带有身份/自动编号字段的主键。不要自己滚。您将在多用户环境中遇到问题。
-
谢谢玛丽。我的程序旨在获取要在应用程序中使用的原始数据文件。后端没有数据库交互;仅与 D1 和 D2 交互。
-
好的... Mary,在导入到我的应用程序之前,我已经构建了一些数据建模,以保证 D1 和 D2 中的主键是不同的。我通过将“系列”应用于从 1,000,000 开始的关键 D1 系列和从 2,000,000 开始的 D2 系列来做到这一点。这消除了对#2的需要
标签: vb.net listview datatable datarow