数据分页显示(二)

三、服务器查询出数据,发往前端

    1、首先前端调用了服务器的某个函数,比如叫: 
        User_GetPagedList(int PageIndex, int PageSize, Dictionary<string, object> Condition, string OrderBy)
        在这里需要传递四个参数:第几页、每页记录条数、查询条件、排序条件。

    2、然后服务器要处理这传过来的四个参数:
        a、根据 Condition 拼接查询条件;
        b、把 OrderBy 也并入查询条件;
        c、得出查询结果的记录总条数;
        d、得出查询结果的总页数;
        最后拼接出的查询SQL语句如下示例:
WITH Tmp AS(
SELECT ROW_NUMBER() OVER (ORDER BY UserAge Desc) AS SortNum,A.ID,A.UserName,A.UserAge,A.HasHouse,A.UserBirthDay FROM dbo.User A WITH(NOLOCK)
WHERE 1=1  AND A.[HasHouse]='true'
)
SELECT * FROM Tmp A WHERE SortNum BETWEEN @StartNum AND @EndNum ORDER BY UserAge Desc

        上面的@StartNum和@EndNum是需要传入的两个参数,那么最终前端显示出的数据就是这两个数字之间的记录,
        比如BETWEEN 10 AND 19,表示显示从第10条到第19条数据。

        然而还有一种特殊情况,那就是如果不想分页,直接将所有数据显示到第一页,则前端传过来的 PageIndex 和 PageSize 都为0,
        那么SQL语句里就不要有查询从哪条到哪条的条件,而且服务器端代码要这么处理:
if (PageIndex == 0 && PageSize == 0)
{
    PageIndex = 1;
    PageSize = list.Count;
    TotalCount = list.Count;
}

      得到的数据:
public override PagedList<User> User_GetPagedList(int PageIndex, int PageSize, Dictionary<string, object> Condition, string OrderBy)
{
    //TO DO...
    //list:查询出来的结果,PageIndex:第几页,PageSize:每页的记录条数,TotalCount:记录总条数
    return new PagedList<User>(list, PageIndex, PageSize, TotalCount);
}

      然后这样的数据还不能直接返回到前端,还需要做处理:
PagedList<User> pg = userBll.User_GetPagedList(PageIndex, PageSize, Condition, OrderBy);
jsonResult.Obj = new PagedList(pg.List, pg.PageIndex, pg.PageSize, pg.TotalCount);
return jsonResult.ToJson(true);

      从PagedList<User>到PagedList的转换用到了一个自定义类PagedList.cs,关于PagedList.cs的代码请看下回分解...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值