基于easyui datagrid后台分页实现

18 篇文章 0 订阅
16 篇文章 0 订阅

easyui datagrid 前台提供分页机制,默认给提供page、rows页码和行数的参数,因此要实现后台分页只需要获取前台的这两个参数配合后台sql的处理可实现分页,具体操作如下:


根据page和rows 计算出前后页的数量

  int startPagenum = rows*(page-1);//开始数量

   int endPagenum = rows * page;//结束时数量

根据查询结果获取总数total,用于分页总数;

利用startPagenum ,endPagenum 通过sql返回的索引进行排序查询,具体如下:

select * from (

select ROW_NUMBER() over(order by 字段) rownum ,*  from t_Table ) t1

where rownum <="+endPagenum +" and rownum >"+startPagenum +" 可以获取间隔内的数据,也就是每个分页的数据。

具体代码

   ///<summary>
        ///根据参数进行分页读取数据集zzjgbDAL
        ///<summary>
        ///<returns>zzjgbDAL集合</returns>
        public IList<BoundsData> SelectPageList(int page, int rows, string sqlWhere, out int totalRecord, string order, string sort)
        {
            int startPagenum = rows*(page-1);//开始数量
            int endPagenum = rows * page;//结束时数量


            StringBuilder strSql = new StringBuilder();
            StringBuilder strWhere = new StringBuilder(sqlWhere);


            strSql.Append("select count(1) totalNum from( SELECT zzjg.dwmc, gps.Fiveofficertype FROM   dbo.t_MiddleGPS AS gps RIGHT OUTER JOIN dbo.t_zzjgb AS zzjg ON gps.bmmc = zzjg.dwmc ");
            if (strWhere.Length > 0) { strSql.AppendFormat(" Where {0}", strWhere.ToString()); }
            strSql.Append("   GROUP BY zzjg.dwmc, gps.Fiveofficertype ) rownumber ");
            totalRecord = 0;
            SQLDBHelper sqlhelper = new SQLDBHelper();
            object obj = sqlhelper.GetScalar(strSql.ToString());
            if (obj != null)
            {
                totalRecord = Convert.ToInt32(obj);
                if (totalRecord <= 0) { return default(List<BoundsData>); };//获取总数
            }




            strSql.Clear();


            strSql.Append("  select * from( ");
            strSql.Append(" SELECT  ROW_NUMBER() over(order by dwmc ) rownumber, zzjg.dwmc, SUM(gps.Scores) AS totalS, gps.Fiveofficertype  FROM   dbo.t_MiddleGPS AS gps RIGHT OUTER JOIN  ");
            strSql.Append("  dbo.t_zzjgb AS zzjg ON gps.bmmc = zzjg.dwmc  ");
          //  strSql.Append(" select count(1) from V_BoundsData  ");
            if (strWhere.Length > 0) { strSql.AppendFormat(" Where {0}"," "+ strWhere.ToString()); }
            strSql.Append(" or CreateDate is null  GROUP BY zzjg.dwmc, gps.Fiveofficertype ) rownumber where rownumber <=" + endPagenum + " and  rownumber>"+startPagenum+" ");//数据库查询分页


            SqlConnection con = new SqlConnection();
            SqlDataReader dr = SQLDBHelper.ExecuteReader(strSql.ToString(), out con);


            List<BoundsData> list = new List<BoundsData>();


            while (dr.Read())
            {
                BoundsData model = BuildEntityView(dr);
                list.Add(model);
            }
            dr.Close();
            con.Close();
            return list;

        }

测试结果


总结:一般的前端列表都支持分页,只要获取页码和行数两个参数,就可以通过后台查询数据库,或者编码中进行分页计算都可以实现,sql中分页相对较多,主要是通过ROW_NUMBER() over(order by 字段)来获取排序后的行号,然后进行数据范围查询即可。 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值