在这个系列中我将介绍一些Atlas SysUIData中较高级的控件包括 SysUIDataListView使用ASPNET Atlas ListView控件显示列表数据 SysUIDataItemView使用ASPNET Atlas ItemView控件显示集合中的单个数据 SysUIDataDataNavigator使用 ASPNET Atlas PageNavigator控件实现客户端分页导航 SysUIDataSortBehavior待续 SysUIDataXSLTView待续 这篇是其中的第三篇使用 ASPNET Atlas PageNavigator控件实现客户端分页导航 把所有的记录统统放在一个页面上绝对不是一个好主意特别是当您有成百上千条记录时您的用户需要不停的拖动滚动条甚至使用Control+F来找到所期待的内容这将带来相当差的用户体验这时将数据以分页的方式显示给用户将友好的多一些ASPNET服务器端控件拥有内建的分页及页面导航功能例如DataGrid和GridView同样的Atlas客户端控件SysUIDataDataNavigator也提供了类似的功能这将大大提高我们的开发效率 DataNavigator控件将与DataView(请参考Atlas命名空间SysData下控件介绍——DataView和DataFilter )控件一起工作我们知道DataView控件没有提供页面导航相关方法所以我们只能直接设置它的pageIndex属性来实现导航虽然没有什么难度但很多情况下这并不是一个好办法因为像我这样好多粗心的开发者往往会忘记检查pageIndex的边界值造成不必要的麻烦这也是Atlas要提供DataNavigator控件的原因之一DataNavigator控件将作为一个DataView控件的代理(proxy)提供易用的页面导航接口 DataNavigator对象只有一个属性 dataView对某个DataView对象的引用这个DataNavigator将把页面导航的操作应用到其上您应该总是指定这个属性 另外要使用DataNavigator控件您还需要提供一些拥有一些指定commandName属性的Atlas Button以触发相应的页面导航操作这些Button的parent属性应该设定为此DataNavigator控件以保证DataNavigator能够捕获到这些Button发出的命令 您可以指定您的Button的commandName属性为如下五个string每个都有不同的含义 page将当前页面索引转为命令参数(command argument)中指定的值通过这个命令我们可以快速的改变页面的索引 nextpage切换到下一页(如果存在下一页) previouspage切换到上一页(如果存在上一页) firstpage切换到第一页 lastpage切换到最后一页 OKMSDN般枯燥的介绍到此为止吧让我们通过一个实例来熟悉DataNavigator的使用方法 首先我们需要暴露一个Web Service以便Atlas页面使用该Web Service将返回条记录下面就是这个Web Service的代码非常易于理解这里不赘 Web Service using System; using SystemCollections; using SystemCollectionsGeneric; using SystemComponentModel; using SystemIO; using SystemWeb; using SystemWebCaching; using SystemWebServices; using SystemWebServicesProtocols; using MicrosoftWebServices; // // For simplicity this example demonstraes storing and manipulating // the data objects in memory A database can also be used // [WebService(Namespace = )] [WebServiceBinding(ConformsTo = WsiProfilesBasicProfile_)] public class MyDataService : DataService { static List _data; static object _dataLock = new object(); private static List Data { get { if (_data == null) { lock (_dataLock) { if (_data == null) { _data = new List(); for (int i = ; i < ; i++) { _dataAdd(new Entry(i Dflying + iToString() stringFormat(Dflying{} iToString()))); } } } } return _data; } } [DataObjectMethod(DataObjectMethodTypeSelect)] public Entry[] SelectRows() { return MyDataServiceDataToArray(); } } public class Entry { private string _name; private string _email; private int _id; [DataObjectField(true true)] public int Id { get { return _id; } set { _id = value; } } [DataObjectField(false)] [DefaultValue(New row)] public string Name { get { return _name; } set { _name = value; } } [DataObjectField(false)] [DefaultValue()] public string Email { get { return _email; } set { _email = value; } } public Entry() { _id = ; } public Entry(int id string name string description) { _id = id; _name = name; _email = description; } } 然后在ASPX页面中我们需要考虑并定义如下四部分的内容 一个ScriptManager控件用来包含页面必须的Atlas Framework相关脚本文件通常情况下这也是每个Atlas页面必须包含的 一个占位(place holder)的div(id为dataContents见代码)Atlas将会把渲染后的分页的ListView放置于此 一个作为容器的div(DataNavigator控件)以及其中包含的一组按钮(命令按钮)用来实现页面导航功能 一个隐藏的div用来放置ListView的模版 下面是以上四部分内容的代码关于ListView控件的模版请参考我的这篇文章使用ASPNET Atlas ListView控件显示列表数据 / No Name Email No Data 最后该书写Atlas的XML脚本定义了有如下五个部分 第一部分Atlas客户端控件DataSource用来从我们上面定义的Web Service中取得数据 第二部分一个DataView控件(请参考Atlas命名空间SysData下控件介绍——DataView和DataFilter )用来将第一部分中取得的那条数据分页 第三部分一个ListView控件(请参考 使用ASPNET Atlas ListView控件显示列表数据 )用于显示分页好的数据 第四部分 DataNavigator控件以及命令按钮注意到这里我们有四个按钮每一个都有不同的commandName属性也分别对应着DataNavigator对DataView的一种操作同时这些按钮的parent属性都设置成了这个DataNavigator对象 |