标签:
我们这里演示的是EasyUI数据表格DataGrid从服务器端排序功能,因为觉的本地数据排序没有多大的作用,一般我们DataGrid不会读取全部数据,只会读取当前页的数据,所以本地数据排序也只是对当前页的数据进行排序,不是我们想要用效果。
下面开始演示从服务器端排序功能。
第一步,启用EasyUI DataGrid的排序功能: 具体就是为列设置sortable属性,如下:
{ field: "SOID", title: "订单单号", width: "80px",sorttable:true }
如果是要为项目中所有EasyUI DataGrid的列开启排序功能,一个一个列的设置就太麻烦了,可以使用以下方法统一添加sorttable属性:
function initDataGrid(grid) { var columns = $("#gridlist").datagrid("options").columns[0]; for (i = 0; i < columns.length; i++) { columns[i].sortable = true; } }
第二步,为EasyUI DataGrid绑定排序事件,如下:
$("#gridlist").datagrid({ onSortColumn: function (sort, order) { loadlistgrid(sort, order); } })
onSortColumn事件有两个sort与order两个参数,sort是指当前用户点击列的列头名,即列的field属性,order就是当前排序的方式,有desc与asc两个值。
有了这两个信息,我们就可以将这两个值传入到服务器,将按当前排序处理后的数据源重新绑定到EasyUI DataGrid即可:
第三步,返回排序后的数据源: 在第二步中我们有定义loadlistgrid方法,方法如下:
function loadlistgrid(sortname, sortvalue) { var url = "/WebService/ashx/Presentation.ashx?sys_sortname=" + sortname + "&sys_sortvalue=" + sortvalue; } $.ajax({ cache: false, async: false, url: url, error: function (XMLHttpRequest, textStatus, errorThrown) { easyuialert(XMLHttpRequest.responseText) }, success: function (data) { data.total = data.rows.length; $("#gridlist").datagrid({ data: data }) } }) }
这样,服务器就可以接收到sort和order两个值了,再根据这两个值在服务器排序数据源,可参考下面代码:
以下是C#代码:
public static DataTable GetList(HttpContext context, string tableName) { if (string.IsNullOrEmpty(tableName)) { throw new Exception("请配置正确的tableName值!"); } string sortName = context.Request.QueryString["sys_sortname"]; string sortValue = context.Request.QueryString["sys_sortvalue"]; string columns = context.Server.UrlDecode(context.Request.QueryString["columns"]); if (string.IsNullOrEmpty(columns)) { columns = "*"; } else { columns = columns.substring(1); } StringBuilder strSql = new StringBuilder(); strSql.Append("select " + columns + " from " + tableName); if (!string.IsNullOrEmpty(sortName) && !string.IsNullOrEmpty(sortValue)) { strSql.Append(" order by " + sortName + " " + sortValue); } return DbHelperSQL.Query(strSql.ToString()).Tables[0]; }
将查询到的DataTable转为Json格式返回给页面就完成我们想要的排序效果了。
本文来自:.Net学习网 http://www.lmwlove.com/ac/ID1150
标签:
原文地址:http://www.cnblogs.com/ziranquliu/p/4721680.html