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

 

Реклама
bulletinsite.net -> Книги на сайте -> Вебмастеру -> Сеппа Д. -> "Microsoft ADO.NET" -> 217

Microsoft ADO.NET - Сеппа Д.

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 211 212 213 214 215 216 < 217 > 218 219 220 221 222 223 .. 260 >> Следующая

Рис. 13-8. Задание значения элемента управления
дочерние записи
В приложении, в конце процедуры, обрабатывающей событие Load формы, есть строка кч:Р<. вызывающая процедуру Ffrrn^dDi.-iedtyCrki Эта процедура добавляет в элемент управления DataGrid новый объект DataGridTableStyle\ позволяющий управлять внешним видом элемента управления: выбирать отображаемые столбцы, а также задавать для каждого из них размер, формат и параметры выравнивания.
Передача в БД изменений из обеих таблиц
Глава посвящена проблемам передачи в БД иерархических изменений. По существу, новые записи требуется передавать, начиная с верхней части иерархии (сначала записи о заказах, потом записи о составе этих заказов), а удаленные записи — начиная с нижней ее части (сначала записи о составе заказов, затем записи о заказах). Таким образом, нельзя взять и целиком передать вызываемому методу DataAdapter.Update объект DdtaTabk.
Для начала следует передать в БД информацию о новых и измененных заказах. После этого — все изменения таблицы Order Details. Затем — удаленные заказы. Изучив код процедуры, обрабатывающей событие Click кнопки Submit Changes, вы ешщпте что он использует гаюк* же «юшку Я прпиожч этот код ниже, опустив для удобочитаемости блок Tty/Ca/cb.
ГЛАВА 13 Создание эффективных Windows-приложений 505
Visual Basic .NET
Dim mtOrdersNodifiea, lntOetallsdodified As Integer Dim aRowsToUpdate As OataRow() Dim dvrs As DataViewRowState
Передаем новые или измененные заказы dvrs = DutaViewRowStats.Addsd Or DataViewRowState.MocifiedCurrent aRowsToUpdate = dsChapter13.Orders.Select("'\ dvrs) intOrdersModified = daOrdars.Update( aRowsToUpdate)
'Передаем все изменения обьекта DataTable,
¦соответствующего таблице Order Details
intDetailsModified = daDetails.Update(dsChapter13.0rder_Details) 'Передае; удаленные заказы dvrs = DataViewRowState.Deleted
aRowsToUpdate = dsChapter13.Orders.Select("", "*, dvrs) intOrdersModified += daOrders.Update(aRowsToUpdate)
Dim strOutput As String
strOutput = "Modified M & intOrdersModified & " order(s)" & vbCrLf & _
"Modified ¦ & intDetailsModified & " detail{s>" MessageBox.Show(strOutput. "Update succeeded!",
HessageBoxButtons.OK, MessageBoxIcon,Information)
Visual C# .NET
int intOrdersModified, intDetailsModified; DataRow[] aRowsToUpdate; DataViewRowState dvrs;
новые или измененные dvrs = DataViewRowState.Added ] DataViewRowState.ModifiedCurrent; aRowsToUpdate = dsCrrapter13.Orders.Selectf". "-, dvrs); intOrdersModified = daOrders.Update(aRowsToUpdate); //Перздаее все изменения обьекта DataTable, //соответствующего таблице Order Details
intDetailsModified = daDetails.Update(dsChapter13.0rder_Details);
удаленные заказы ¦dvrs = DataViewRowState. Deleted;
aRowsToUpdate = dsChapter13 Orders.Select("". "', dvrs); intOrdersModified += daOrders.Update(aRowsToUpdate);
string strOutput;
strOutput = "Modified " + intOrdersModified + order (s) \n\r" +
"Modified " + IntDetailsModified + " detail(s)"; MessageBox.Show(strOutput, "Update succeeded!"
HessageBoxButtons.OK, MessageBoxIcon.Information);
Этап 9. Связывание второй формы с тем же источником данных
Связать несколько элементов управления на разных формах с одним источником данных сложно, но можно. Прежде чем подробно рассматривать процесс такого связывания, я отвлекусь и р,н i mv.-m как усовершенствовать интерфейс приложения, чтобы сделать редактирование данных еще более простым,
506
Часть IV Создание эффективных приложений с использоеакизм ADQ.NET
Элемент управления DataGrid — полезное и мощное средство. Я часто использую такие элементы управления для вывода содержимого нескольких записей. Тем не менее мне не очень-то пр:илг;г;! ситуация, когда пользователю предоставлена возможность редактировать данные непосредственно в DataGrid. Вы, вероятно, знаете, что изменения в элементе управления DataGrid удается отменить, нажав Escape или Qrl+И, однако редко кто из начинающих пользователей понимает, что это вообще возможно.
Не н'лДч-пСь, что пользователи обнаружат и запомнят этот способ, я предпочитаю сделать процесс редактирования более интуитивным, даже если он при этом и удлинится на пару этапов. Итак, на этапе 9 создания приложения я сделал объект DataGrid со сведениями о конкретного заказа доступным только для чте-
ния. Чтобы изменить пиформ.шпкI о заказанных товарах, пользователь должен щелкнуть кнопку — то же требование, что и к редактированию информации о заказе. Если пользователю понадобится изменить информацию о заказанном товаре, приложение откроет модальную форму (рис. Н-'-Л. позволяющую изменить нужную запись.
PlodLC! ID: Um« Price
Hem ToHrl
10643
4S.S

Update
Cued
Рис. 13-9. Редактирование информации о заказанном товаре на новой форме
Здесь можно редактировать запись о товаре и точно так же, как при изменении записи о заказе, для прекращения редактирования следует кнопку Update или Cancel.
Теперь вернемся к связыванию нескольких элементов управления, расположенных на разных формах, с одним источником данных. Элементы управления Test Box новой формы связаны с той же записью данных, которая отображается в элементе управления DataGrid основной формы. И хотя связать таким образом элементы управления в период разработки нельзя, это допустимо в период выполнения, как показано ниже.
Предыдущая << 1 .. 211 212 213 214 215 216 < 217 > 218 219 220 221 222 223 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100