|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
9.3 Элемент управления DataListЭлемент управления DataList в ASP.NET 2.0 Элемент управления DataList используется в ситуации, когда нужно производить редактирование элементов в базе данных в виде некоего гибрида ленточного отчета и формы. По сравнению с элементом управления GridView этот элемент управления предоставляет больше возможностей по настройке внешнего вида данных, которые берутся из источника (поскольку элементы управления Label, TextBox и т.п.) вы расставляете сами, однако требует существенно больше времени и усилий по настройке. Добавлять новые записи, как и при использовании элемента управления GridView, средствами DataList мы не можем. Работа с этим элементом управления выглядит следующим образом:
· ItemTemplate — шаблон для отображения обычных элементов на форме; · AlternatingItemTemplate — необязательный шаблон для отображения каждой второй записи. Обычно для него только чуть меняется фон по сравнению с ItemTemplate — чтобы удобнее было воспринимать длинные страницы; · SelectedItemTemplate — шаблон для отображения выбранной в настоящий момент записи; · EditItemTemplate — шаблон для отображения редактируемой в настоящий момент записи.
Чтобы связать элементы управления с полями в источнике данных, проще всего использовать ссылку EditDataBindings в мастере, который появляется для каждого из добавляемых элементов управления. Сразу отметим, что по умолчанию при выводе страницы показываются только шаблоны ItemTemplate и AlternatingItemTemplate (по очереди - см. рис. 9.3-1). Для отображения SelectedItemTemplate и EditItemTemplate нужно добавить дополнительную функциональность.
Рис. 9.3-1 Элемент управления DataList — пока без возможностей редактирования
Protected Sub DataList1_SelectedIndexChanged(ByVal sender As _ System.Object, ByVal e As System.EventArgs) _ Handles DataList1.SelectedIndexChanged DataList1.DataBind() End Sub Чтобы не была выбрана ни одна запись, нужно для свойства SelectedIndex элемента управления DataList настроить значение -1. Соответственно, нужно предусмотреть элемент управления (кнопку со значением свойства CommandName "unselect") для этой цели и использовать код следующего вида: Protected Sub DataList1_ItemCommand(ByVal source As Object, _ ByVal e As DataListCommandEventArgs) _ Handles DataList1.ItemCommand If e.CommandName = "unselect" Then DataList1.SelectedIndex = -1 End If DataList1.DataBind() End Sub Точно также настраивается обработка событий для перехода в режим редактирования: Protected Sub DataList1_EditCommand(ByVal source As Object, _ ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs) DataList1.EditItemIndex = e.Item.ItemIndex DataList1.DataBind() End Sub Отметим, что в шаблоне SelectedItemTemplate нужно предусмотреть кнопки со значениями свойства CommandName update и cancel, и привязать обработчики событий же для этих кнопок. По нажатию кнопки Update будет производиться выполнение команды по внесению изменений на источнике, а при нажатии на Cancel будет выполнена отмена внесенных изменений. Точно также, через обработчики событий, производится обработка события нажатия на кнопку Delete (удаление записи из источника).
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить учебные материалы по этому курсу |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||