Поделиться через


Практическое руководство. Редактирование строк в объекте 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";
    

См. также

Основные понятия

Editing Data in a Table

Adding Data to a Table

Deleting a Row from a Table

Привязка элементов управления Windows Forms к данным в Visual Studio

Подготовка приложения к получению данных

Выборка данных в приложение

Привязка элементов управления к данным в Visual Studio

Редактирование данных в приложении

Проверка данных

Сохранение данных

Другие ресурсы

Подключение к данным в Visual Studio