Практическое руководство. Редактирование строк в объекте DataTable

Обновлен: Ноябрь 2007

Чтобы изменить существующую строку в таблице 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.

Чтобы обновить существующие записи в нетипизированных наборах данных (индекс строки неизвестен)

  • Используйте метод SelectDataTable для обнаружения определенной строки и присвоения новых значений нужным столбцам

    В следующем примере столбец 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.

    Типизированные наборы данных используют раннюю привязку, которая предоставляет имена таблиц и столбцов в виде свойств в режиме разработки. Результатом этого становится более легкий для чтения и записи код.

    В следующем примере показано обновление данных в столбцах CompanyName и City пятой записи таблицы Customers в наборе данных:

    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";
    

См. также

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

Изменения объекта DataTable

Добавление данных в DataTable

Удаление DataRow

Общие сведения об отображении данных

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

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

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

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

Отображение данных на форме в приложениях Windows

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

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

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