【发布时间】:2014-08-26 19:46:26
【问题描述】:
我在 WinForms 应用程序上有一个 DataGridView 控件,该控件是从我的数据库中的一个表绑定的。每当用户从 DataGridView 将一行“拉”到位于它旁边的单独 DataGridView 时,我希望这个 DataGridView 发生变化(最初是空白的,并且没有绑定到任何东西)。
我相信你以前见过这样的东西,让我画一个图表。这将是某人在左侧 DataGridView 表中选择了 Row1,然后点击拉取按钮将其拉到右侧 DataGridView 表的示例:
Database: ToBeDeleted:
Row1 ______ Row1
Row2 |Pull|
Row3 |--->| ______________
etc.. ------ |Remove Records|
现在,当用户将左表中的一条记录“拉”到右表时,我想左表更新自身以不再包含该行。这样,用户就不能将同一行中的两个添加到右侧表中,并且它会立即反映他们即将进行的更改(因为右侧表表示要从左侧表中删除的记录)。
【问题讨论】:
-
如果绑定,则从数据源中删除/移除
-
没有其他方法可以做到这一点吗?因为目前他们可以将同一行的 2 条拉到右侧表中,点击 Remove Record 按钮,然后由于尝试从数据库中删除两次相同的记录而引发数据库异常。
-
也许一种解决方案是简单地检查右侧表格中的任何行并检查要拉出的行,如果有任何重复,则显示礼貌的 MessageBox 弹出窗口,告诉他们将同一行添加两次(以及取消操作)。这不是用户友好的,但它就足够了。
-
而不是要删除的范例,为什么不直接删除呢?另一种方法是有一个隐藏列来标记要删除的列,然后过滤掉 DB DGV 中的 ToBeDeleted 列。然后,当您确实要删除时,只处理 DB DGV - 另一个是眼睛糖果
-
@Musicode 在不知道您的 DAL 是如何设置的情况下,听起来好像您受到了 IDE 的限制。也许现在是学习如何以编程方式进行操作的时候了?照原样使用数据表:只需克隆表并将其用作正确的 DGV 数据源。然后,每当拖动一行时,导入该行(克隆表)并删除(源表)。
标签: vb.net winforms datagridview