【问题标题】:How to Update DataTable如何更新数据表
【发布时间】:2013-08-31 15:46:29
【问题描述】:

我有一个主要的DataSet,其中包含几个DataTables。这些不同的 DataTable 分别绑定到它们的 DataGridView 的 DataSource 上。

我的问题是每当我修改显示区域中的某些内容时,例如下面的描述文本框,然后单击保存....

>>

DataGridView 没有复制的更改,如下所示:

我需要一种更新 DataTable 的方法...我的保存按钮成功保存了信息。我对 DataSets 和 DataTables 很陌生,所以这是我第一次尝试更新 DataTable。我怀疑我需要重新加载 DataTable 中的信息,必须有更高效的东西吗?

【问题讨论】:

  • 显示区域到底是什么,链接到什么?到DataGridView作为源的数据集?
  • @varocarbas 当我点击保存按钮时,显示区域就是信息被加载和修改的地方。它将该信息保存到数据库中,但保存的数据不会复制到 DataTable 中,因为我没有重新加载它或...修改 DataTable 中的给定行
  • 请记住,通常的过程是:在开始时将数据源设置为 DataGridView;然后允许直接对 DataGridView 进行某种修改(例如通过您提到的显示区域)。这些修改不影响源,但涉及的 DataGridView 单元格。如果要影响源,更改不会立即反映在 DataGridView 中,您必须刷新/重新链接。如果我正确理解您想要什么,那么在您的情况下我会做的是同时执行两个并行版本:DB 和 DGV
  • @varocarbas 对。我明白,我搜索了它,显然需要一个 TableAdapter 以及我的数据集?一旦我的修改完成并复制到数据库,DataTable 也需要更新。这将复制 DataGridView 中的更改(因为它已绑定到 DataTable)。我只是不知道该怎么做......
  • 如果您更改 DataGridView 的数据源,更改将不会立即更新。如果要修改特定的字段,为什么不直接更新DataGridView呢?

标签: vb.net datatable updates


【解决方案1】:

使用未知索引更新数据表

欲了解更多信息:How to: Edit Rows in a 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 具有最新信息。

【讨论】:

    猜你喜欢
    • 2023-02-16
    • 1970-01-01
    • 2019-08-21
    • 2021-09-16
    • 1970-01-01
    • 2019-11-05
    • 2018-07-31
    • 1970-01-01
    • 2019-07-26
    相关资源
    最近更新 更多