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

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

Для обнаружения определенной строки и присвоения новых значений нужным столбцам следует использовать метод Select объекта DataTable. В следующем примере столбец CustomerID является первичным ключом таблицы Customers, поэтому вызов метода Select и поиск по первичному ключу вернет единственную строку. Возвращаемый тип по-прежнему представляет собой массив строк DataRow, поэтому мы получаем доступ по индексу (0), или обращаемся к первой строке в массиве.

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

Редактирование строки в DataTable по известому индексу строки в нетипизированном наборе

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

Имена таблиц и столбцов нетипизированных наборов данных недоступны в режиме разработки, поэтому к ним нужно обращаться посредством их соответствующих индексов.

В следующем примере показано обновление данных в первых двух столбцах пятой записи первой таблицы в Dataset1, доступ к значениям таблиц, строк и индексов коллекции элементов (столбцов):

dataSet1.Tables[0].Rows[4].ItemArray[0] = "Updated Company Name";

dataSet1.Tables[0].Rows[4].ItemArray[1] = "Seattle";

В следующем примере показано, как обновлять те же данные, что и в предыдущем примере, заменяя индексы коллекции в таблице и передавая имена столбцов в виде строк. По-прежнему необходимо знать индекс строки, которую необходимо изменить:

dataSet1.Tables["Customers"].Rows[4]["CompanyName"] = "Updated Company Name";

dataSet1.Tables["Customers"].Rows[4]["City"] = "Seattle";

Удаление строк из объекта DataTable

  • Visual Studio 2008

Для сохранения сведений, необходимых набору данных для обновления источника данных, используется метод Delete, который удаляет строки в таблице данных. Например, если приложение использует TableAdapter (или DataAdapter), метод адаптера Update будет удалять строки в базе данных, имеющие RowState, равный Deleted.

Если приложению не требуется отсылать обновления обратно к источнику данных, можно удалить записи, обращаясь к коллекции строк данных напрямую (Remove). Информация о поиске определенной строки в DataTable содержится в разделе Практическое руководство. Поиск заданной строки в объекте DataTable.

Чтобы удалить записи из таблицы данных, выполните следующие действия:

  • Для типизированных наборов вызовите метод Delete объекта DataRow.

Данный метод не удаляет записи физически; вместо этого он помечает записи для удаления.

Примечание. Если получено свойство count объекта DataRowCollection, в итоговом результате будут присутствовать записи, помеченные для удаления. Для получения точного количества только тех записей, которые не были помечены для удаления, можно просмотреть свойства RowState каждой записи в коллекции (записи, отмеченные для удаления, имеют RowState, равный Deleted). Также можно создать представление данных набора данных, которое выполнит фильтрацию на основе состояния строки и получит свойство count непосредственно оттуда.

В следующем примере показано, как вызывать метод Delete, помечающий как удаленную первую строку в таблице Customers:

northwindDataSet1.Customers.Rows[0].Delete();

  • Для нетипизированных наборов данных используйте код, аналогичный приведенному ниже:

dataSet1.Tables["Customers"].Rows[0].Delete();