ASP.NET 2.0数据教程之四十五:DataList和Repeater数据排序(一)
/asp:DropDownList> <asp:Button runat="server" ID="RefreshRepeater" Text="Refresh" /> 完成DropDownList后,我们需 要更新ObjectDataSource的Selecting event handler,来让它使用选择的 SortByListItem的Value作为sort expression,代替前面的硬编码。 C#
现在第一次浏览页的时候,由于默认的SortBy ListItem 的值 为ProductName,因此product会根据ProductName字段来排序。见图6。选择一个 其它的项–比如“Category”–然后点Refresh,这时会 postback,数据会根据category name来重新排序,见图7。 图 6: 第一次 Products 根据 Name 排序 图 7: 现在 Products 根据 Category 来排序 注意:点Refresh button会让数据重新排序是因为Repeater的view state被禁用了,因此Repeater 在每次postback时重新绑定到数据源。如果你开启Repeater的view state,这时 改变drop-down list不会对排序有任何影响。为了修复这个问题,你可以为 Refresh Button的 Click event创建一个event handler,来重新绑定Repeater到 数据源(调用Repeater的DataBind()方法)。 记下Sort Expression 和 Direction(排序表达式和排序方向) 如果包含可排序的DataList或 Repeater的页可能有其它和排序无关的postback发生,那么我们需要在postback 过程中记下sort expression 和 direction。比如,我们将本章的Repeater修改 成为每个product包含一个Delete button。当用户点Delete button时我们会执行 一些代码来删除选择的product,然后将数据绑定到Repeater。如果排序的信息在 postback过程中没有被保存下来,那么显示的数据会回复到最初的排序状态。 本章里,DropDownList隐式的为我们将sort expression 和 direction保 存在它的view state里。如果我们使用不同的排序界面–LinkButton提供不 同的排序选项–我们就需要在postback过程中记下排序的信息。这个可以通 过将排序的参数记在page的view state里,或者记在querystring里,或者通过一 些其它状态保存机制来实现。 本章后面的例子会探讨如何将排序信息保存 在page的view state里。 本文配套源码 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |