mvc(easyui)真分页

      咱们在使用easyui表格的时候,感觉是非常方便的。咱们选中页数,选中刷新图标,上一页下一页都非常好用,并且自动显示从多少条到多少条。

  

       整个语句在controlers层中是这样写的。


          其中d层有这么一句话。

     //list = list.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
       其实这个list在刚刚赋值的时候是把数据库符合的信息都查出来了。就是没有加条数的信息,可以说把所有的数据都搜出来了,只是在全部查出来又做了一个筛选。

       这个怎么写呢?

       拿mysql语句做一个例子。

  public List<VM_BorrowlogGroup> FrmLoad(VM_BorrowlogGroup QGroup, int pageSize, int pageIndex, out int total)
        {
            int begin = (pageIndex - 1) * pageSize;
string sql = "select COUNT(*) from (SELECT v.mail,applicateName,opName,i.itemName,s.storageName,v.positionID,v.number,v.lendingDate,v.lendingTime,v.returnDate,v.returnTime,v.remark,v.isDel,v.itemNo,v.purpose,v.status,v.op from (SELECT a.username as applicateName,t.userName AS opName,b.itemNo,b.storageID,b.positionID,b.number,b.lendingDate,b.lendingTime,b.returnDate,b.returnTime,b.remark,b.purpose,b.status, b.isDel, b.op,a.mail FROM (SELECT * FROM T_User) AS a RIGHT JOIN T_BorrowLog b ON a.userid = b.applicant LEFT JOIN T_User t ON t.userID = b.op)v LEFT JOIN T_Item i on v.itemNo=i.itemNo LEFT JOIN T_Storage s on v.storageID=s.storageID)as aa where op=@op LIMIT " + begin + "," + pageSize + "";
     关键在于 LIMIT " + begin + "," + pageSize + ""; 这是求begin+1这条语句和下面的pagesize条语句。

     可以写成这样 LIMIT 3,5";  这样的意思就是说从第4条开始算取出5条记录,也就是3,4,5,6,7这几条语句求出来。

     这样咱们就做出了真分页,单咱们还需要求出total也就总的数量这个就好算了。

string sql = "select  COUNT(*) from (SELECT v.mail,applicateName,opName,i.itemName,s.storageName,v.positionID,v.number,v.lendingDate,v.lendingTime,v.returnDate,v.returnTime,v.remark,v.isDel,v.itemNo,v.purpose,v.status,v.op from (SELECT a.username as applicateName,t.userName AS opName,b.itemNo,b.storageID,b.positionID,b.number,b.lendingDate,b.lendingTime,b.returnDate,b.returnTime,b.remark,b.purpose,b.status, b.isDel, b.op,a.mail FROM (SELECT * FROM T_User) AS a RIGHT JOIN T_BorrowLog b ON a.userid = b.applicant LEFT JOIN T_User t ON t.userID = b.op)v LEFT JOIN T_Item i on v.itemNo=i.itemNo LEFT JOIN T_Storage s on v.storageID=s.storageID)as aa where op=@op";
   PS:在说一下SQLserver中的语句。

select top 10 * from A where id not in (select top 30 id from A)
      这句话的意思就是先求出前30条,然后在把这30条去掉。在取10条,这样就算出了31到40条。如果咱们有serial列的话可以把id换成series就可以。

      感谢大家的建议。





评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值