Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 263

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 257 258 259 260 261 262 < 263 > 264 265 266 267 268 269 .. 320 >> Следующая

Внесение изменений в строки
Последний очень важный вопрос, который мы должны прояснить, — а как можно вносить изменения в уже существующие строки в объекте DataTable? Наиболее простой способ — вначале воспользоваться тем же методом SeI ect (), чтобы отобрать интересующие нас строки, а затем внести изменения в те объекты DataRow, которые вернет нам этот метод. Например, предположим, что в пашем приложении появилась еще одна кнопка, по нажатии на которую все значения BMW в столбце Make должны быть заменены на Colt. Код обработчика события Click для этой кнопки может выглядеть следующим образом:
//Находим все строки, которые нужно отредактировать, при помощи запроса protected void btnChange_Click (object sender. System.EventArgs e) {
Il Создаем фильтр для отбора строк string fllterStr - "Make-'BMW"; istring strMake = null:
// Получаеи все строки, соответствуйте условию DataRow[] makes - inventoryTable.SelecUfilterStr):
Тип 651
Il Заменяеи в отобранных отроках значения в столбце Make на "Colt"
fortint і • 0: і < makes.tength: 1++) {
DataRow temp = makes[i]; strHake += temp["Make"] - "Colt": makes[i] = temp:
}
I
Кроме того, в классе DataRow также предусмотрены методы Begi ":Ес: t EndEdi t и CancelEdit(}, которые позволяют редактировать содержимое строки, отключив на время все правила проверки целостности данных, связанные с соответствующей строкой. Как только мы вызываем метод BeginEditO для объекта DataRow, он переводится в режим редактирования. В этом режиме мы вносим необходимые изменения, а затем вызываем либо EndEdi t О для сохранения внесенных изменений, либо Cancel Edi t () для их отмены. Например:
//Считаем, что вы у*е получили объект DataRow для внесения изменений. Теперь ны // переводин его в режим редактирования
rowToUpdate.BeginEditO :
//Перелаем эту строку вспомогательной функции, возвращающей true // или false
і f (ChangeVa 1 uesForTh і sRow (rowTotlpdate)) (
rowToUpdate EndEd і tu ; // OK!
e lse
{
rowToUpdate.CancelEditO: // Нет, спасибо.
}
Методы BegInEc1It.(), EndEdi иCance'IEdit() можно вызывать вручную, но чаще они вызываются автоматически в процессе редактирования строк через элемент управления DataGrid, связанный с DataTable. Например, если мы выбрали строку для внесения изменений в D a t a Gr і d, то эта строка автоматически переводится в режим редактирования. При перемещении фокуса на новую строку автоматически вызывается метод EndEdi t О. Проверить это можно очень просто: заменим значения столбца Make на BMW для всех автомобилей через элемент управления DataGrid нашего приложения (рис. 13.15), а затем точно так же запросим все строки со значением В MW. Нам должны вернуться все строки, в которые мы внесличерез DataGrid соответствующие изменения (рис. 13.16).
Тип DataView
В мире баз данных представление (view) это специальным образом настроенное отображение данных из таблицы (или нескольких таблиц). Например, мы можем создать представление на основе нашей таблицы Inventory, которое будет отображать только автомобили определенного цвета. В ADO.NET представления (объекты DataView) позволяют программным образом получать выборку данных на основе базовой таблицы (объекта DataTable).
652 Глава 13 * Доступ к данным при помощи ADO.NET
Get ihew sm*,«*- j Remove row 8 Ij
Inventory
Oil D I Make ¦Coiw . I PetName ¦ -I
J 1020 Bl 'Tan
1030 BMW lRnk Pain lnducei
1040 BMW Pea Soup Gre Fred
1050 BMW IBlack Buddha
1G60 BMW Red Mel
1070 BMW Black Sarah
Рис. 13.15. Редактируем строки с помощью DataGrid...
ШИННИЙ f
Chucky
Tiny
Lex
Pah Inducer ¦ Fred
Buddha
MeI
Sarah
Рис. 13.16. ...а затем получаем их с помощью к DataTable
Для одной и той же таблицы мы можем создать неограниченное число представлений. Создание нескольких представлений для одной таблицы может потребоваться, например, если мы планируем использовать эти представления в разных элементах управления (например, если у нас на форме размещено несколько элементов управления DataGrid). Например, первый DataGrid может быть привязан к объекту Data View, который позволяет получить строки для всех автонобилей в таблице, второй DataGrid работает через DataVi ew, выводящий информацию только о зеленых автомобилях и т. п. В классе DataTable предусмотрено свойство DefaultView, при помощи которого можно получить представление по умолчанию для данной
таблицы.
Рассмотрим это на примере. Пусть на главной форме нашего приложения теперь будет размещен не один элемент управления DataGrid, а целых три. Первый, как и раньше, будет выводить информацию обо всех автомобилях в DataTable, второй — только автомобили красного цвета (значения в столбце Color равны Red), а третий — только автомобили, для которых в столбце Make значится Col t. Выглядеть все это может так, как показано на рис. 13.17.
Change al наитию to Colls
Тип DataView 653
Car Data Table

Msbe Change all Besmeis to Coli*

Get these makes: I Remove row 8 j
Предыдущая << 1 .. 257 258 259 260 261 262 < 263 > 264 265 266 267 268 269 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100