通过 ReorderList 使用回发 (C#)

作者 :Christian Wenz

下载 PDF

AJAX 控件工具包中的 ReorderList 控件提供了一个列表,用户可以通过拖放对该列表进行重新排序。 每当重新排序列表时,回发应通知服务器更改。

概述

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:数据源的 ID
  • 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 和 Control Toolkit 的功能,必须将控件 ScriptManager 放在页面上:

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

每次重新排序都会触发回发

每次重新排序都会触发回发 (单击以查看全尺寸图像)