datagrid排序问题


排序我主要注意了三部分内容:

1、在控制表格的JavaScript代码中,加入datagerid的onSortColum事件,

onSortColum: function (sort,order) {  //其中sort代表排序列字段名称;order:排序列的顺序(ASC或DESC)
   $('#dg').datagrid('reload', {
   sort: sort,
   order: order
  });
}

2、在需要排序的单元格将 sortable设置为true

columns: [[ 
{ field: 'adminName', title: '登录名', width: 300},
{ field: 'trueName', title: '用户名', width: 300, sortable: true },//sortable设置为true
{ field: 'mobilePhone', title: '联系电话', width: 200 }
]],

3、.ashx文件 需要得到前台界面反馈回来的值,然后对其进行操作;将得到的 sort和order作为查询的一个条件,传至后台

     得到dataset数据,将dataset数据转换为JSON数据格式返回

    这里的JSON数据转换的方法我封装起来,在这里只是进行了调用,前面的几节的代码是没有封装过的,是写在.ashx里,直接用的。

 public void ProcessRequest(HttpContext context)
        {
            string sort = !string.IsNullOrEmpty(context.Request.QueryString["sort"]) ? context.Request.QueryString["sort"] : "trueName";   //获得前端的sort string order = !string.IsNullOrEmpty(context.Request.QueryString["order"]) ? context.Request.QueryString["order"] : "asc";     //获得前端的order
            Query(context, sort, order);  
        }
        public void Query(HttpContext context, string sort, string order)
        {
            context.Response.ContentType = "text/plain";
            

            DataTable dta = BRL.BLL.A_admin.GetListByOrder(sort,order).Tables[0];   //获得数据库数据(这里我将获取数据的方法进行了封装,这里只是调用就可以了,具体如何获取数据参照本节后面的内容) int count = dta.Rows.Count;
            string strJson =BRL.Common.JsonDatachange.Dataset2Json(BRL.BLL.A_admin.GetListByOrder(sort,order), count);//DataSet数据转化为Json数据 ,这里的方法我也进行了封装,这里只是实现了方法的调用
            context.Response.Write(strJson);




        }  

 

 

4、在后台根据筛选调用数据库数据时,应将筛选条件改为:

 public static DataSet GetListByOrder(string sort, string order)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("SELECT * FROM A_Admin order by "+sort+" "+order); //修改筛选条件 return DBUtility.DbHelperSQL.Query(strSql.ToString());
          
        }

 

具体的全部代码:

前端部分的:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="dataGrid.aspx.cs" Inherits="Web.Management.dataGrid" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
     <link href="easyui/themes/default/easyui.css" rel="stylesheet" />
    <link href="easyui/themes/icon.css" rel="stylesheet" />
    <link href="css/style.css" rel="stylesheet" />
    <script src="easyui/jquery.min.js"></script>
    <script src="easyui/jquery.easyui.min.js"></script>
    <script type="text/javascript" src="http://www.w3cschool.cc/try/jeasyui/datagrid-detailview.js"></script>
    <script src="easyui/locale/easyui-lang-zh_CN.js"></script>
    <script src="js/echarts.js"></script>
    <script src="js/shine.js"></script>
    <script type="text/javascript">  
        $(function () {  
            $('#dg').datagrid({
                url: 'ashx/Handler1.ashx',
                width: 800,  
                title: '设备管理',  
                method:'get',  
                columns: [[  
                    { field: 'adminName', title: '登录名', width: 300},
                    { field: 'trueName', title: '用户名', width: 300, sortable: true },
                    { field: 'mobilePhone', title: '联系电话', width: 200 }
                ]],  
                pagination: true,  
                pageSize:1,  
                pageList: [1, 2, 3],
                onSortColum: function (sort,order) {
                    $('#dg').datagrid('reload', {
                        sort: sort,
                        order: order
                    });
                    }
            })  
        })
        function pagerFilter(data) {
            if (typeof data.length == 'number' && typeof data.splice == 'function') {   // is array  
                data = {
                    total: data.length,
                    rows: data
                }
            }
            var dg = $(this);
            var opts = dg.datagrid('options');
            var pager = dg.datagrid('getPager');
            pager.pagination({
                onSelectPage: function (pageNum, pageSize) {
                    opts.pageNumber = pageNum;
                    opts.pageSize = pageSize;
                    pager.pagination('refresh', {
                        pageNumber: pageNum,
                        pageSize: pageSize
                    });
                    dg.datagrid('loadData', data);
                }
            });
            if (!data.originalRows) {
                data.originalRows = (data.rows);
            }
            var start = (opts.pageNumber - 1) * parseInt(opts.pageSize);
            var end = start + parseInt(opts.pageSize);
            data.rows = (data.originalRows.slice(start, end));
            return data;
        }

        $(function () {
            $('#dg').datagrid({ loadFilter: pagerFilter }).datagrid('loadData', getData());
        });
    </script> 
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <table id="dg"></table>  
    </div>
    </form>
</body>
</html>

 

.ashx:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;

namespace Web.Management.ashx
{
    /// <summary>
    /// Handler1 的摘要说明
    /// </summary>
    public class Handler1 : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            string sort = !string.IsNullOrEmpty(context.Request.QueryString["sort"]) ? context.Request.QueryString["sort"] : "trueName";
            string order = !string.IsNullOrEmpty(context.Request.QueryString["order"]) ? context.Request.QueryString["order"] : "asc";
            Query(context, sort, order);  
        }
        public void Query(HttpContext context, string sort, string order)
        {
            context.Response.ContentType = "text/plain";
            

            DataTable dta = BRL.BLL.A_admin.GetListByOrder(sort,order).Tables[0];



            int count = dta.Rows.Count;
            string strJson =BRL.Common.JsonDatachange.Dataset2Json(BRL.BLL.A_admin.GetListByOrder(sort,order), count);//DataSet数据转化为Json数据    
            context.Response.Write(strJson);




        }  
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

 

封装的转换JSON方法:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace BRL.Common
{
    public class JsonDatachange
    {
        public static string Dataset2Json(DataSet ds, int total = -1)
        {
            StringBuilder json = new StringBuilder();

            foreach (DataTable dt in ds.Tables)
            {
                //{"total":5,"rows":[  
                json.Append("{\"total\":");
                if (total == -1)
                {
                    json.Append(dt.Rows.Count);
                }
                else
                {
                    json.Append(total);
                }
                json.Append(",\"rows\":[");
                json.Append(DataTable2Json(dt));
                json.Append("]}");
            }
            return json.ToString();
        }

        public static string DataTable2Json(DataTable dt)
        {
            StringBuilder jsonBuilder = new StringBuilder();

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                jsonBuilder.Append("{");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    jsonBuilder.Append("\"");
                    jsonBuilder.Append(dt.Columns[j].ColumnName);
                    jsonBuilder.Append("\":\"");
                    jsonBuilder.Append(dt.Rows[i][j].ToString());
                    jsonBuilder.Append("\",");
                }
                if (dt.Columns.Count > 0)
                {
                    jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                }
                jsonBuilder.Append("},");
            }
            if (dt.Rows.Count > 0)
            {
                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
            }

            return jsonBuilder.ToString();
        }  
    }
}

 

sql语句封装的方法:

 public static DataSet GetListByOrder(string sort, string order)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("SELECT * FROM A_Admin order by "+sort+" "+order);
            return DBUtility.DbHelperSQL.Query(strSql.ToString());
          
        }

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="dataGrid.aspx.cs" Inherits="Web.Management.dataGrid" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    <title></title>     <link href="easyui/themes/default/easyui.css" rel="stylesheet" />    <link href="easyui/themes/icon.css" rel="stylesheet" />    <link href="css/style.css" rel="stylesheet" />    <script src="easyui/jquery.min.js"></script>    <script src="easyui/jquery.easyui.min.js"></script>    <script type="text/javascript" src="http://www.w3cschool.cc/try/jeasyui/datagrid-detailview.js"></script>    <script src="easyui/locale/easyui-lang-zh_CN.js"></script>    <script src="js/echarts.js"></script>    <script src="js/shine.js"></script>    <script type="text/javascript">          $(function () {              $('#dg').datagrid({                url: 'ashx/Handler1.ashx',                width: 800,                  title: '设备管理',                  method:'get',                  columns: [[                      { field: 'adminName', title: '登录名', width: 300},                    { field: 'trueName', title: '用户名', width: 300, sortable: true },                    { field: 'mobilePhone', title: '联系电话', width: 200 }                ]],                  pagination: true,                  pageSize:1,                  pageList: [1, 2, 3],                onSortColum: function (sort,order) {                    $('#dg').datagrid('reload', {                        sort: sort,                        order: order                    });                    }            })          })        function pagerFilter(data) {            if (typeof data.length == 'number' && typeof data.splice == 'function') {   // is array                  data = {                    total: data.length,                    rows: data                }            }            var dg = $(this);            var opts = dg.datagrid('options');            var pager = dg.datagrid('getPager');            pager.pagination({                onSelectPage: function (pageNum, pageSize) {                    opts.pageNumber = pageNum;                    opts.pageSize = pageSize;                    pager.pagination('refresh', {                        pageNumber: pageNum,                        pageSize: pageSize                    });                    dg.datagrid('loadData', data);                }            });            if (!data.originalRows) {                data.originalRows = (data.rows);            }            var start = (opts.pageNumber - 1) * parseInt(opts.pageSize);            var end = start + parseInt(opts.pageSize);            data.rows = (data.originalRows.slice(start, end));            return data;        }
        $(function () {            $('#dg').datagrid({ loadFilter: pagerFilter }).datagrid('loadData', getData());        });    </script> </head><body>    <form id="form1" runat="server">    <div>     <table id="dg"></table>      </div>    </form></body></html>

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM