easyui的datagrid的分页问题

来源:互联网 发布:部落冲突疗伤法术数据 编辑:程序博客网 时间:2024/05/13 18:12

       首先尝试了一下官方的分页方法:即采用pagerFilter方法。如下所示

 

functionpagerFilter(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;}

       但是不知道为啥总是报不支持"'refresh'"的属性或方法,没有研究出来。知道的可以留言告诉偶一下嘛微笑。就改用服务器后台的分页方法。


public class EmployeeIOHandler : IHttpHandler    {        public void ProcessRequest(HttpContext context)        {            context.Response.ContentType = "text/plain";            //获取分页和排序信息:页大小,页码,排序方式,排序字段              int pageSize, pageIndex;            pageSize = 10;            pageIndex = 1;            string order, sort, oderby; order = sort = oderby = "";            if (null != context.Request["rows"])            {                //获取前台传过来的每页显示数据的条数                  pageSize = int.Parse(context.Request["rows"].ToString().Trim());            }            if (null != context.Request["page"])            {                //获取当前的页码                  pageIndex = int.Parse(context.Request["page"].ToString().Trim());            }             //context.Response.Write("Hello World");                      string strJSON = DataTableToJson(QueryDetailByDeptType("").Tables[0], pageIndex, pageSize);  //分页显示            context.Response.Write(strJSON);            context.Response.End();        }        private DataSet  QueryDetailByDeptType(string strLinkName)        {              ........................            return ds;                         }        /// <summary>        /// 根据页数、页码等进行分页显示数据        /// </summary>        /// <param name="dt"></param>        /// <param name="PageIndex"></param>        /// <param name="PageSize"></param>        /// <returns></returns>        public static string DataTableToJson(DataTable dt, int PageIndex, int PageSize)        {            StringBuilder jsonBuilder = new StringBuilder();            jsonBuilder.Append("{\"total\":");            jsonBuilder.Append(dt.Rows.Count);            jsonBuilder.Append(",\"rows\":[");            DataTable cdt = SplitDataTable(dt,PageIndex,PageSize);            for (int i = 0; i < cdt.Rows.Count; i++)            {                jsonBuilder.Append("{");                for (int j = 0; j < cdt.Columns.Count; j++)                {                    jsonBuilder.Append("\"");                    jsonBuilder.Append(cdt.Columns[j].ColumnName);                    jsonBuilder.Append("\":\"");                    jsonBuilder.Append(cdt.Rows[i][j].ToString());                    jsonBuilder.Append("\",");                }                if (cdt.Columns.Count > 0)                {                    jsonBuilder.Remove(jsonBuilder.Length - 1, 1);                }                jsonBuilder.Append("},");            }            if (cdt.Rows.Count > 0)            {                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);            }            jsonBuilder.Append("]}");            return jsonBuilder.ToString();        }        /// <summary>        /// 根据索引和pagesize返回记录        /// </summary>        /// <param name="dt">记录集 DataTable</param>        /// <param name="PageIndex">当前页</param>        /// <param name="pagesize">一页的记录数</param>        /// <returns></returns>        public static DataTable SplitDataTable(DataTable dt, int PageIndex, int PageSize)        {            if (PageIndex == 0)                return dt;            DataTable newdt = dt.Clone();            //newdt.Clear();            int rowbegin = (PageIndex - 1) * PageSize;            int rowend = PageIndex * PageSize;            if (rowbegin >= dt.Rows.Count)                return newdt;            if (rowend > dt.Rows.Count)                rowend = dt.Rows.Count;            for (int i = rowbegin; i <= rowend - 1; i++)            {                DataRow newdr = newdt.NewRow();                DataRow dr = dt.Rows[i];                foreach (DataColumn column in dt.Columns)                {                    newdr[column.ColumnName] = dr[column.ColumnName];                }                newdt.Rows.Add(newdr);            }            return newdt;        }        public bool IsReusable        {            get            {                return false;            }        }    }



尚存在一个这样的问题:就是页面前端设置成不分页的时候,这里仍显示分页中的第一页。


参考资料:

1、http://www.cnblogs.com/infozero/archive/2009/11/06/1597727.html

2、http://www.cnblogs.com/huozhicheng/archive/2011/09/27/2193605.html

3、http://www.cnblogs.com/szytwo/archive/2012/08/27/2658673.html#1

4、http://www.tuicool.com/articles/jIVvmu

5、等等


0 0
原创粉丝点击