Использование постбеков с ReorderList (C#)

Кристиан Венц

Скачать в формате PDF

Элемент управления ReorderList в наборе средств управления AJAX предоставляет список, который может быть переупорядочен пользователем с помощью перетаскивания. Каждый раз при переупорядочении списка постбэк должен сообщать серверу об изменении.

Обзор

Элемент ReorderList управления в наборе средств управления AJAX предоставляет список, который может быть переупорядочен пользователем с помощью перетаскивания. Каждый раз при переупорядочении списка постбэк должен сообщать серверу об изменении.

Шаги

Существует несколько возможных источников данных для ReorderList элемента управления. Один из них — использовать XmlDataSource элемент управления:

<asp:XmlDataSource ID="XmlDataSource1" runat="server" XPath="acronym/letter">
 <Data>
 <acronym>
 <letter char="A" description="Asynchronous" />
 <letter char="J" description="JavaScript" />
 <letter char="A" description="And" />
 <letter char="X" description="XML" />
 </acronym>
 </Data>
</asp:XmlDataSource>

Чтобы привязать этот XML к элементу ReorderList управления и включить обратные передачи, необходимо задать следующие атрибуты:

  • DataSourceID: идентификатор источника данных
  • SortOrderField: свойство для сортировки по
  • AllowReorder: следует ли разрешить пользователю переупорядочение элементов списка
  • PostBackOnReorder: следует ли создавать возвратный запрос при перестроении списка

Ниже приведена соответствующая разметка для элемента управления:

<ajaxToolkit:ReorderList ID="rl1" runat="server" SortOrderField="char"
 AllowReorder="true"
 DataSourceID="XmlDataSource1" PostBackOnReorder="true">

В элементе ReorderList управления определенные данные из источника данных могут быть привязаны с помощью Eval() метода:

<DragHandleTemplate>
 <div class="DragHandleClass">
 </div>
 </DragHandleTemplate>
 <ItemTemplate>
 <div>
 <asp:Label ID="ItemLabel" Text='<%# Eval("description") %>' runat="server" />
 </div>
 </ItemTemplate>
</ajaxToolkit:ReorderList>

При произвольной позиции на странице метка будет содержать сведения, когда произошло последнее изменение порядка:

<div>
 <asp:Label ID="lastUpdate" runat="server" />
</div>

Эта метка заполняется текстом в коде на стороне сервера, обрабатывая обратную передачу:

<script runat="server">
 void Page_Load()
 {
 if (Page.IsPostBack)
 {
 lastUpdate.Text = "List last reordered at " + 
 DateTime.Now.ToLongTimeString();
 }
 }
</script>

Наконец, чтобы активировать функциональные возможности ASP.NET AJAX и набора средств управления, элемент ScriptManager управления должен быть помещен на страницу:

<asp:ScriptManager ID="asm" runat="server" />

Каждая перестановка вызывает обратный вызов

Каждое изменение порядка активирует постбэк (щелкните, чтобы увидеть изображение в полном размере)