Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法
Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法
这篇笔记将介绍如何使用Ext.Net GridPanel 中使用Sorter。
默认情况下,Ext.Net GridPanel中的列都具有排序功能,效果如下:
如果要禁用列排序,需要在列模型中添加一个属性Sortable="false"
客户端排序
排序是对Store的操作。如果我们要在一个Store中加入排序,可以使用下面的配置:
<Sorters>
<ext:DataSorter Property="Name" Direction="DESC"></ext:DataSorter>
</Sorters>
有了这段代码,我们的Store将会在显示之前进行排序。效果如下:
服务器端排序
默认情况下,排序是在客户端进行的,不会进行远程请求。如果Store一次加载了所有数据,客户端排序没有问题;如果Store是分页异步加载数据,那么这种排序方式就不能满足需要了,我们需要异步的排序。
我们来将Store改为异步分页的Store,代码如下:
<ext:Store runat="server" ID="storeUserInfo" PageSize="5"
RemoteSort="true" OnReadData="storeUserInfo_ReadData">
<Model>
<ext:Model ID="UserInfoModel" runat="server" IDProperty="ID">
<Fields>
<ext:ModelField Name="ID" Type="Int"></ext:ModelField>
<ext:ModelField Name="Name" Type="String"></ext:ModelField>
<ext:ModelField Name="Gender" Type="String"></ext:ModelField>
<ext:ModelField Name="Age" Type="Int"></ext:ModelField>
</Fields>
</ext:Model>
</Model>
<Proxy>
<ext:PageProxy></ext:PageProxy>
</Proxy>
<Sorters>
<ext:DataSorter Property="Name" Direction="DESC"></ext:DataSorter>
</Sorters>
</ext:Store>
我们对Store进行修改,加入了RemoteSort属性,表示是否进行远程排序,然后加入默认的排序规则,Property表示排序字段,Direction表示排序方向(正序、倒序)
OnReadData事件的处理方法如下:
protected void storeUserInfo_ReadData(object sender, Ext.Net.StoreReadDataEventArgs e)
{
int start = e.Start;
int limit = e.Limit; var userInfoList = UserInfo.GetData();
e.Total = userInfoList.Count; storeUserInfo.DataSource = userInfoList.Skip(start).Take(limit).ToList();
storeUserInfo.DataBind();
}
上面的这段代码只是完成了Store的异步分页,如果想要我们的Store进行服务器端的排序,还需要修改ReadData事件处理方法,加入排序的代码:
//处理排序的相关代码
if (e.Sort.Count() > 0)
{
foreach (var item in e.Sort)
{
switch (item.Property)
{
case "Name":
userInfoList.Sort((u1, u2) =>
{
switch (item.Direction)
{
case Ext.Net.SortDirection.Default:
case Ext.Net.SortDirection.ASC:
default:
return string.Compare(u1.Name, u2.Name);
case Ext.Net.SortDirection.DESC:
return 0 - string.Compare(u1.Name, u2.Name);
}
});
break;
case "Age":
userInfoList.Sort((u1, u2) =>
{
switch (item.Direction)
{
case Ext.Net.SortDirection.Default:
case Ext.Net.SortDirection.ASC:
default:
return u1.Age - u2.Age;
case Ext.Net.SortDirection.DESC:
return u2.Age - u1.Age;
} });
break;
}
}
}
在这段代码中,item.Property表示排序字段;item.Direction表示排序方向。
如果在.ashx中使用排序,可以先构造一个请求参数,然后使用上面的代码进行排序:
var prms = new StoreRequestParameters(context);
// use prms.Sort[0].Property and prms.Sort[0].Direction
通过context构造一个请求参数,然后可以获取参数里面的Sort数组。
Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法的更多相关文章
- 【Ext.Net学习笔记】05:Ext.Net GridPanel的用法(包含Filter、Sorter、Grouping、汇总(Summary)的用法)
GridPanel是用来显示数据的表格,与ASP.NET中的GridView类似. GridPanel用法 直接看代码: <ext:GridPanel runat="server&qu ...
- 【Ext.Net学习笔记】06:Ext.Net GridPanel的用法(GridPanel 折叠/展开行、GridPanel Selection、 可编辑的GridPanel)
GridPanel 折叠/展开行 Ext.Net GridPanel的行支持折叠/展开功能,这个功能个人觉得还说很有用处的,尤其是数据中包含图片等内容的时候. 下面来看看效果: 使用行折叠/展开功能之 ...
- Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel
Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel Ext.Net GridPanel 有两种编辑模式:编辑单元格和编辑行. 单元格编辑: 行编辑: 可以看出,单元格编辑的时候,只 ...
- Ext.Net学习笔记16:Ext.Net GridPanel 折叠/展开行
Ext.Net学习笔记16:Ext.Net GridPanel 折叠/展开行 Ext.Net GridPanel的行支持折叠/展开功能,这个功能个人觉得还说很有用处的,尤其是数据中包含图片等内容的时候 ...
- Ext.Net学习笔记17:Ext.Net GridPanel Selection
Ext.Net学习笔记17:Ext.Net GridPanel Selection 接下来是Ext.Net的GridPanel的另外一个功能:选择. 我们在GridPanel最开始的用法中已经见识过如 ...
- Ext.Net学习笔记15:Ext.Net GridPanel 汇总(Summary)用法
Ext.Net学习笔记15:Ext.Net GridPanel 汇总(Summary)用法 Summary的用法和Group一样简单,分为两步: 启用Summary功能 在Feature标签内,添加如 ...
- Ext.Net学习笔记12:Ext.Net GridPanel Filter用法
Ext.Net学习笔记12:Ext.Net GridPanel Filter用法 Ext.Net GridPanel的用法在上一篇中已经介绍过,这篇笔记讲介绍Filter的用法. Filter是用来过 ...
- Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法
Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法 Ext.Net GridPanel可以进行Group操作,例如: 如何启用Grouping功能呢?只需要在Grid ...
- Ext.Net学习笔记11:Ext.Net GridPanel的用法
Ext.Net学习笔记11:Ext.Net GridPanel的用法 GridPanel是用来显示数据的表格,与ASP.NET中的GridView类似. GridPanel用法 直接看代码: < ...
随机推荐
- 修改ruby gem源为ruby.taobao.org
由于网络原因,导致从rubygems.org下载gem文件较慢或者间歇性的连接失败,所以可以修改gem源为ruby.taobao.org.具体可以用 gem install rails -V 来查看执 ...
- matplotlib 初使用
试玩了一下 matplotlib, 感觉是:很酥狐吖~ 完全不像 ggplot 那样云里雾里,但是后者展现出的图要漂亮优雅许多. x = linspace(0, 10, 100) //初始化一个 [0 ...
- A Tour of Go Variables with initializers
A var declaration can include initializers, one per variable. If an initializer is present, the type ...
- Modelsim初级使用教程
来源 http://blog.sina.com.cn/s/blog_6c7b6f030101ctlh.html 一. Modelsim简介 Modelsim仿真工具是Model公司开发的.它支持Ver ...
- sqlplus 连接数据库报错SP2-0642: SQL*Plus internal error state 2130, context 0:0:0
sqlplus 连接数据库报错SP2-0642: SQL*Plus internal error state 2130, context 0:0:0 问题描述: 使用sqlplus客户端登录数据库,报 ...
- IOS开发之TableView替换默认的checkmark为自定义图像
直接上代码: On cellForRowAtIndexPath: UIButton*button =[UIButton buttonWithType:UIButtonTypeCustom];CGRec ...
- Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA
版权声明:本文为博主原创文章,未经博主允许不得转载. [前言] 本文简单的介绍了加密技术相关概念,最后总结了java中现有的加密技术以及使用方法和例子 [最简单的加密] 1.简单的概念 明文:加密前的 ...
- MySQL主主复制+LVS+Keepalived实现MySQL高可用性1
http://bestvivi.com/2015/09/09/MySQL%E4%B8%BB%E4%B8%BB%E5%A4%8D%E5%88%B6+LVS+Keepalived%E5%AE%9E%E7% ...
- mysql导出部分(指定)数据库表字段
需要导出某个表中的部分字段信息 之前导出数据库表一直使用mysqldump命令,例如: mysqldump -hIP -uroot -P3306 -p 库 表 > 名字.sql 但是如果导出 ...
- IIS8无法调用Oracle.DataAccess .dll问题
之前在.net平台下操作Oracle都是用的oracle.dataaccell.dll引用,但是服务器升级为II8后,发布的新服务有关Oracle数据库部分都无法运行,调试了好久发现是IIS8不支持低 ...