datagridview 数据源在使用 usercontrol 以编程方式创建的多个选项卡中共享
datagridview datasource is shared in multiple tabs created programmatically with usercontrol
在一个表单中,我有一个按钮,需要一个 UserControl
将其添加到新的 Tab
中,然后将这个 Tab
添加到 TabControl
中。在 UserControl
中有一个 DataGridView
在 UserControl.cs
文件中被初始化,像这样:dataGridView.DataSource = MainWin.dataSet.DataTableVideo;
。现在的问题是所有页面都共享 DataSource
,因此如果我在第 1 页上的一个 DGV 中更改值,第 2 页上的值将相同。我怎样才能把它们分开?
您可以为业务(视图)模型中的每个单独的网格视图创建数据库数据的副本 class。然后您可以为每个网格创建该对象的实例,用数据库中的数据填充它并将其分配给网格。编辑数据网格中的数据后,您可以将存储在对象中的信息保存到数据库中。请注意此交互,因为哪个 gridview 将包含更新到数据库的主要信息...
因此,对于可能需要它的任何人,正如 TaW 在评论中所说,在创建每个页面时,我都会复制未填写的原件 table,如下所示:
DataTable tablePositionText = MainWin.dataSet.DataTablePositionText.Copy();
(注意:重要的是它最后有.Copy()
使其成为独立副本,否则它是一个参考)然后使用这个副本。
在一个表单中,我有一个按钮,需要一个 UserControl
将其添加到新的 Tab
中,然后将这个 Tab
添加到 TabControl
中。在 UserControl
中有一个 DataGridView
在 UserControl.cs
文件中被初始化,像这样:dataGridView.DataSource = MainWin.dataSet.DataTableVideo;
。现在的问题是所有页面都共享 DataSource
,因此如果我在第 1 页上的一个 DGV 中更改值,第 2 页上的值将相同。我怎样才能把它们分开?
您可以为业务(视图)模型中的每个单独的网格视图创建数据库数据的副本 class。然后您可以为每个网格创建该对象的实例,用数据库中的数据填充它并将其分配给网格。编辑数据网格中的数据后,您可以将存储在对象中的信息保存到数据库中。请注意此交互,因为哪个 gridview 将包含更新到数据库的主要信息...
因此,对于可能需要它的任何人,正如 TaW 在评论中所说,在创建每个页面时,我都会复制未填写的原件 table,如下所示:
DataTable tablePositionText = MainWin.dataSet.DataTablePositionText.Copy();
(注意:重要的是它最后有.Copy()
使其成为独立副本,否则它是一个参考)然后使用这个副本。