博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法
阅读量:6858 次
发布时间:2019-06-26

本文共 2671 字,大约阅读时间需要 8 分钟。

这篇笔记将介绍如何使用Ext.Net GridPanel 中使用Sorter。

默认情况下,Ext.Net GridPanel中的列都具有排序功能,效果如下:

image

如果要禁用列排序,需要在列模型中添加一个属性Sortable="false"

客户端排序

排序是对Store的操作。如果我们要在一个Store中加入排序,可以使用下面的配置:

有了这段代码,我们的Store将会在显示之前进行排序。效果如下:

image

服务器端排序

默认情况下,排序是在客户端进行的,不会进行远程请求。如果Store一次加载了所有数据,客户端排序没有问题;如果Store是分页异步加载数据,那么这种排序方式就不能满足需要了,我们需要异步的排序。

我们来将Store改为异步分页的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数组。

本文转自齐师傅博客园博客,原文链接:http://www.cnblogs.com/youring2/p/3568347.html,如需转载请自行联系原作者

你可能感兴趣的文章
Gitlab的CI/CD初尝试
查看>>
大反转!Uber撞人致死系行人过错,质疑无人车的打脸不?
查看>>
js手写日历
查看>>
【1024程序员节】程序员,你学编程的初衷是什么?
查看>>
基于nodejs实现每天固定时间发送邮件服务
查看>>
开源大数据周刊-第35期
查看>>
MVC\MVP\MVVM的干货实现
查看>>
java版spring cloud+spring boot+redis多租户社交电子商务平台 (十一)docker部署spring cloud项目...
查看>>
Flask框架从入门到精通之路由(三)
查看>>
Istio 网关中的 Gateway 和 VirtualService 配置深度解析
查看>>
我的友情链接
查看>>
第九章 Linux系统下分区、格式化磁盘,学会挂载和卸载磁盘
查看>>
linux下IPTABLES配置详解
查看>>
Linux中硬盘转速查看
查看>>
未激活的windows server自动关机故障
查看>>
nginx实现大小写字母转换(ngx_http_lower_upper_case模块)
查看>>
Java并发编程实战(chapter_1)(原子性、可见性)
查看>>
C语言经典100例
查看>>
Varnish+Xcache构建高性能WEB构架初探
查看>>
Java程序中的内存漏洞
查看>>