如何:编辑数据表中的行

更新:2010 年 9 月

为了编辑 DataTable 中现有的行,需要定位要编辑的 DataRow,然后将更新的值分配到所需列。

下面的示例演示如何在类型化和非类型化数据集中定位和修改行。

在不知道要编辑的行的索引时编辑 DataTable 中的记录

通常情况下并不知道要编辑的行索引。 类型化数据集中的数据表是通过 FindBy 方法创建的,该方法使用表的主键来定位行。

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

  • 使用生成的 FindBy 方法将特定 DataRow 分配到一个变量,然后使用该变量访问要编辑的列并向列分配新值。

    在下面的示例中,CustomerID 列是 Customers 表的主键,因此生成的 FindBy 方法为 FindByCustomerID。 此示例假定您已生成了名为 NorthwindDataSet 的类型化数据集,并且您具有此类型化数据集的实例,名为 northwindDataSet1。

    Dim customersRow As NorthwindDataSet.CustomersRow
    customersRow = NorthwindDataSet1.Customers.FindByCustomerID("ALFKI")
    
    customersRow.CompanyName = "Updated Company Name"
    customersRow.City = "Seattle"
    
    NorthwindDataSet.CustomersRow customersRow = 
        northwindDataSet1.Customers.FindByCustomerID("ALFKI");
    
    customersRow.CompanyName = "Updated Company Name";
    customersRow.City = "Seattle";;
    

通常情况下并不知道要编辑的行索引。 非类型化数据集中的数据表是通过 Select 方法创建的,该方法返回一个 DataRow 数组。

更新非类型化数据集中的现有记录(行索引未知)

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

    在下面的示例中,CustomerID 列是 Customers 表的主键,因此调用 Select 方法和搜索主键只能找到一行。 返回类型仍然是一个 DataRow 数组,因此将访问 (0) 索引,或数组中的第一行。 此示例假定您具有名为 dataSet1 的数据集。

    Dim customerRow() As Data.DataRow
    customerRow = DataSet1.Tables("Customers").Select("CustomerID = 'ALFKI'")
    
    customerRow(0)("CompanyName") = "Updated Company Name"
    customerRow(0)("City") = "Seattle"
    
    DataRow[] customerRow = 
        dataSet1.Tables["Customers"].Select("CustomerID = 'ALFKI'");
    
    customerRow[0]["CompanyName"] = "Updated Company Name";
    customerRow[0]["City"] = "Seattle";
    

在知道要编辑的行的索引时编辑 DataTable 中的记录

使用类型化数据集更新现有记录(行索引未知)

  • 将值分配给 DataRow 对象中的特定列。

    类型化数据集将利用在设计时将表名和列名公开为属性的早期绑定。 它会生成更容易读取和写入的代码。

    下面的示例演示如何更新数据集中 Customers 表第五个记录的 CompanyName 和 City 列中的数据。 此示例假定您已生成了名为 NorthwindDataSet 的类型化数据集,并且您具有此类型化数据集的实例,名为 northwindDataSet1。

    NorthwindDataSet1.Customers(4).CompanyName = "Updated Company Name"
    NorthwindDataSet1.Customers(4).City = "Seattle"
    
    northwindDataSet1.Customers[4].CompanyName = "Updated Company Name";
    northwindDataSet1.Customers[4].City = "Seattle";
    

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

  • 将值分配给 DataRow 对象中的特定列。

    非类型化数据集的表名和列名在设计时不可用,必须通过它们各自的索引来对其进行访问。

    下面的示例演示如何更新 dataSet1 中第一个表第五个记录的前两列中的数据。 此示例假定 dataSet1 中的第一个表对应于 Northwind 数据库的 Customers 表,并且此表的前两列为 CompanyName 和 City 列。

    DataSet1.Tables(0).Rows(4).Item(0) = "Updated Company Name"
    DataSet1.Tables(0).Rows(4).Item(1) = "Seattle"
    
    dataSet1.Tables[0].Rows[4][0] = "Updated Company Name";
    dataSet1.Tables[0].Rows[4][1] = "Seattle";
    

    下面的示例演示如何将集合索引替换为作为字符串传递的表名和列名,以更新与上一个示例相同的数据。 仍需要知道要编辑的行索引。

    DataSet1.Tables("Customers").Rows(4).Item("CompanyName") = "Updated Company Name"
    DataSet1.Tables("Customers").Rows(4).Item("City") = "Seattle"
    
    dataSet1.Tables["Customers"].Rows[4]["CompanyName"] = "Updated Company Name";
    dataSet1.Tables["Customers"].Rows[4]["City"] = "Seattle";
    

请参见

概念

DataTable 编辑

向数据表中添加数据

DataRow 删除

在 Visual Studio 中将 Windows 窗体控件绑定到数据

在 Visual Studio 中将控件绑定到数据

其他资源

连接到 Visual Studio 中的数据

准备应用程序以接收数据

将数据获取到应用程序

在应用程序中编辑数据

验证数据

保存数据

修订记录

日期

修订记录

原因

2010 年 9 月

更改了一个 C# 代码示例,以使用 ItemsArray 而不是 Items

内容 Bug 修复