如何更新DataTable

3
我有一个主要的 DataSet ,其中包含几个 DataTables 。这些不同的DataTable分别绑定到它们的DataGridView数据源上。
我的问题是,每当我修改显示区域中的东西(例如下面的描述文本框),然后单击保存时...... Description <<< 转换为 >>> Modified Description 如下所示,DataGridView没有复制更改: DataGridView Results 我需要一种方法来更新DataTable......我的保存按钮成功保存了信息。由于我是第一次尝试更新DataTable,因此我对DataSets和DataTables非常陌生。 我怀疑我不需要重新加载DataTable中的信息,一定有更有效的方法?

请记住,通常的步骤是:在开始时将数据源设置为DataGridView;然后直接允许通过你提到的显示区域对DataGridView进行某种修改。这些修改不会影响源,而是涉及到的DataGridView单元格。如果您想影响源,则更改不会立即反映在DataGridView中,您必须刷新/重新链接。如果我正确理解您想要的内容,那么在您的情况下,我会同时执行两个并行的编辑:DB和DGV。 - varocarbas
如果您更改DataGridView的DataSource,则更改不会立即更新。如果您想修改特定字段,为什么不直接更新DataGridView呢? - varocarbas
@varocarbas 嗯,我觉得如果我手动更新 DataGridView(避免使用绑定到 DataGridView 的 DataTable),我就会违背 DataTable 的目的...我想有一种简单的方法来更新 DataTable 的行... 然后将其复制回 DataGridView。 - Alex
@varocarbas 是的,我的 DataTable 修改后,DataGridView 没有任何修改就被更新了。希望我不会遇到太多问题!我原以为需要在 DataGridView 中取消链接并在之后重新链接它。 - Alex
显示剩余6条评论
1个回答

7

更新一个拥有未知索引的 DataTable

更多信息请参考:如何:编辑 DataTable 中的行

要编辑 DataTable 中已存在的一行,您需要先定位到您想要编辑的 DataRow,然后将更新后的值分配给所需的列。


在强类型数据集中更新已存在的记录(不知道行索引)

使用生成的 FindBy 方法将特定的 DataRow 分配给变量,然后使用该变量来访问您想要编辑的列并为其分配新值。

Dim Description As String = "Hello World Modified"

'Update DataTable
Dim Row As DataSet1.DataTableRow
Row = DataSet1.DataTableRow.FindByPrimaryKey(PK)
Row.Description = Description

更新未知行索引的弱类型数据集中的现有记录

使用DataTable的Select方法定位特定行并将新值分配给所需的列

Dim Description As String = "Hello World Modified"

'Update DataTable
Dim Row() As Data.DataRow
Row = DataSet1.Tables("Table1").Select("PrimaryKey = '10'")
Row(0)("Description") = Description

完成这个操作后,我就不需要刷新其他任何内容了——我的DataGridView已经具有了最新的信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接