[转载]EasyUI中数据表格DataGrid添加排序功能

我们这里演示的是EasyUI数据表格DataGrid从服务器端排序功能,因为觉的本地数据排序没有多大的作用,一般我们DataGrid不会读取全部数据,只会读取当前页的数据,所以本地数据排序也只是对当前页的数据进行排序,不是我们想要用效果。

下面开始演示从服务器端排序功能。

第一步,启用EasyUI DataGrid的排序功能: 具体就是为列设置sortable属性,如下:

{ field: "SOID", title: "订单单号", "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

原文地址:https://www.cnblogs.com/ziranquliu/p/4721680.html