如何:编辑数据表中的行
更新:2007 年 11 月
为了编辑 DataTable 中现有的行,需要定位要编辑的 DataRow,然后将更新的值分配到所需列。
下面的示例演示如何在类型化和非类型化数据集中定位和修改行。
在不知道要编辑的行的索引时编辑 DataTable 中的记录
通常情况下并不知道要编辑的行索引。类型化数据集中的数据表是通过 FindBy 方法创建的,该方法使用表的主键来定位行。
更新类型化数据集中的现有记录(行索引未知)
使用生成的 FindBy 方法将特定 DataRow 分配到一个变量,然后使用该变量访问要编辑的列并向列分配新值。
在下面的示例中,CustomerID 列是 Customers 表的主键,因此生成的 FindBy 方法为 FindByCustomerID。
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) 索引,或数组中的第一行。
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 列中的数据:
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.Tables(0).Rows(4).Item(0) = "Updated Company Name" DataSet1.Tables(0).Rows(4).Item(1) = "Seattle"
dataSet1.Tables[0].Rows[4].ItemArray[0] = "Updated Company Name"; dataSet1.Tables[0].Rows[4].ItemArray[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";