Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка приложений баз данных (Visual Studio 2008).docx
Скачиваний:
143
Добавлен:
26.03.2016
Размер:
1.01 Mб
Скачать

Редактирование строк в объекте DataTable

Чтобы изменить существующую строку в таблице DataTable, необходимо найти строку DataRow, которую требуется изменить и затем присвоить обновленные значения нужным столбцам.

Поиск строки в типизированном наборе данных по известному значению первичного ключа

Большинство приложений, получающих данные, нуждаются в доступе к отдельным записям, которые отвечают некоторым критериям. Чтобы найти конкретную строку в наборе данных по значению первичного ключа, вызовите метод Findобъекта DataRowCollection, которыйполучает указанный объект DataRow:

Имя

Описание

Find(Object)

Возвращает строку, указанную значением первичного ключа.

Find(Object[])

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

Чтобы найти строку в нетипизированном наборе данных по известному значению первичного ключа следует вызвать метод Findиз коллекцииDataRowCollection, передав первичный ключ в качестве параметра.

В следующем примере показано, как объявить новую строку с именем foundRowи присвоить ей возвращаемое значение метода Find. Если первичный ключ найден, содержимое индекса столбца 1 отображается в окне сообщения.

Язык C#

string s = "primaryKeyValue";

DataRow foundRow = dataSet1.Tables["AnyTable"].Rows.Find(s);

if (foundRow != null)

{

MessageBox.Show(foundRow[1].ToString());

}

else

{

MessageBox.Show("A row with the primary key of " + s + " could not be found");

}

Поиск строк на основе значений в любом столбце

Метод Selectвозвращает массивDataRowна основе выражения, переданного методуSelect. Ниже приведена таблица перегрузки этого метода.

Список перегрузки

Имя

Описание

Select()

Получает массив всех объектов DataRow.

Select(String)

Получает массив всех объектов DataRow, отвечающих условиям фильтра в порядке первичного ключа (если ключ отсутствует, то в порядке их добавления).

Select(String, String)

Получает массив всех объектов DataRow, отвечающих условиям фильтра, согласно указанному порядку сортировки.

Select(String, String, DataViewRowState)

Получает массив всех объектов DataRow, отвечающих условиям фильтра, согласно порядку сортировки, соответствующему указанному состоянию.

В следующем примере показано использование метода SelectобъектаDataTableдля поиска конкретных строк.

Язык C#

DataRow[] foundRows;

foundRows = dataSet1.Tables["Customers"].Select("CompanyName Like 'A%'");

В следующих примерах показано, как найти и изменить строки в типизированном и нетипизированном наборах данных.

Редактирование записей в типизированном наборе данных (индекс строки неизвестен)

Обычно, вы не знаете индекс строки, которую необходимо изменить. В типизированных наборах применяется метод FindBy, который использует первичный ключ таблицы для поиска строки.

С помощью метода FindBy присвойте определенной переменной значение найденного объекта DataRow и затем используйте эту переменную для доступа к столбцам, которые требуется изменить и присвоить им новые значения.

В следующем примере столбец CustomerID является первичным ключом таблицы Customers, поэтому метод FindBy генерируется как FindByCustomerID. В этом примере "ALFKI" – искомое значение первичного ключа.

NorthwindDataSet.CustomersRow customersRow =

northwindDataSet1.Customers.FindByCustomerID("ALFKI");

customersRow.CompanyName = "Updated Company Name";

customersRow.City = "Seattle";