Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Разработка Web-приложений ASP.NET 2.0 в Visual Studio.NET 2005
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

9.3 Элемент управления DataList

Элемент управления DataList в ASP.NET 2.0

Элемент управления DataList используется в ситуации, когда нужно производить редактирование элементов в базе данных в виде некоего гибрида ленточного отчета и формы. По сравнению с элементом управления GridView этот элемент управления предоставляет больше возможностей по настройке внешнего вида данных, которые берутся из источника (поскольку элементы управления Label, TextBox и т.п.) вы расставляете сами, однако требует существенно больше времени и усилий по настройке. Добавлять новые записи, как и при использовании элемента управления GridView, средствами DataList мы не можем.

Работа с этим элементом управления выглядит следующим образом:

  1. После перетаскивания его на форму необходимо настроить для него источник данных (либо на графическом интерфейсе объект DataSource, либо программно через свойство DataSource — DataSet с набором необходимых команд);
  2. Убедиться, что для свойства DataKeyField для данного элемента управления выбран первичный ключ таблицы (или результатов запроса) на источнике данных. Это необходимо для того, чтобы обеспечить непротиворечивость при выполнении операций вставки. Обычно DataKeyField определяется автоматически, но для надежности лучше все-таки проверить.
  3. Далее нужно перейти в режим редактирования шаблонов для записей. Для этого проще всего щелкнуть правой кнопкой мыши о элементу управления DataList и в контекстном меню выбрать Edit Templates | Item templates, хотя можно перейти в тот же режим и при помощи мастера. В режиме редактирования элементов в DataList появятся четыре области:

·        ItemTemplate — шаблон для отображения обычных элементов на форме;

·        AlternatingItemTemplate — необязательный шаблон для отображения каждой второй записи. Обычно для него только чуть меняется фон по сравнению с ItemTemplate — чтобы удобнее было воспринимать длинные страницы;

·        SelectedItemTemplate — шаблон для отображения выбранной в настоящий момент записи;

·        EditItemTemplate — шаблон для отображения редактируемой в настоящий момент записи.

  1. Затем нужно заполнить требуемыми элементами управления (и просто кодом HTML) каждый из шаблонов. Для каждого поля, информацию о котором нужно предоставлять пользователям, необходимо создать свой элемент управления. Для всех шаблонов, кроме EditItemTemplate, для большинства полей будут использоваться элементы управления Label (хотя возможны и другие варианты, например, для поля с данными даты/времени можно использовать элемент управления Calendar). Для EditItemTemplate чаще всего используются элементы управления TextBox.

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

Сразу отметим, что по умолчанию при выводе страницы показываются только шаблоны ItemTemplate и AlternatingItemTemplate (по очереди - см. рис. 9.3-1). Для отображения SelectedItemTemplate и EditItemTemplate нужно добавить дополнительную функциональность.

Рис. 9.3-1 Элемент управления DataList — пока без возможностей редактирования

  1. Для того, чтобы обеспечить возможность перехода в режим Select и Edit, а также производить удаление, необходимо предусмотреть в шаблонах ItemTemplate и AlternatingItemTemplate соответствующие кнопки. Для этих кнопок должны быть установлены значения свойства CommandName в зависимости от их предназначения (регистр должен быть соблюден точно):
  • select — кнопка для перехода в режим просмотра выбранной записи (используется шаблон SelectedItemTemplate);
  • unselect — кнопка для отмены выделения (не будет выделена ни одна запись);
  • edit — кнопка для перехода в режим редактирования записей (используется шаблон EditItemTemplate);
  • delete — кнопка для удаления выбранной записи.
  1. Следующее действие, которое нужно сделать — предусмотреть обработчики событий, которые будут срабатывать при нажатии соответствующей кнопки. Например, чтобы перейти в режим выбранной записи (SelectedItemTemplate) нужно добавить на страницу codebehind следующий код:

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 (удаление записи из источника).

 

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 
© 2004-2008, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru