Практическое руководство. Редактирование строк в объекте DataTable
Чтобы изменить существующую строку в таблице 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.
Чтобы обновить существующие записи в нетипизированных наборах данных (индекс строки неизвестен)
Используйте метод SelectDataTable для обнаружения определенной строки и присвоения новых значений нужным столбцам
В следующем примере столбец 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.
Типизированные наборы данных используют раннюю привязку, которая предоставляет имена таблиц и столбцов в виде свойств в режиме разработки.Результатом этого становится более легкий для чтения и записи код.
В следующем примере показано обновление данных в столбцах CompanyName и City пятой записи таблицы Customers в наборе данных.В следующем примере предполагается, что уже создан типизированный набор данных с именем 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 соответствует таблице Customers в базе данных Northwind, а первые два столбца этой таблицы являются столбцами 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";
См. также
Основные понятия
Привязка элементов управления Windows Forms к данным в Visual Studio
Подготовка приложения к получению данных
Привязка элементов управления к данным в Visual Studio
Редактирование данных в приложении