分页之C#封装存储过程(site,bll,dal)

DAL层:

public DataTable GetDataByPage(int pageIndex,int pageSize,out int totalcount)

{

 totalcount=0;

 //1.0 定义存储过程的名字,一定是在数据库存在的存储过程

 string prodname="USP_GetListByPage";

 //2.0 定义存储过程需要的参数数组

 SqlParameter[] params=new SqlParameter[]{

  new SqlParameter("@pageIndex",pageIndex),

  new SqlParameter("@pageSize",pageSize),

  new SqlParameter("@totalcount",totalcount)

};

 //3.0 由于totalcount在存储过程中的参数类型为OUTPUT,所以在此要增加对其的描述

 params[2].Direction=ParameterDirection.Output;

 //4.0 开始执行,注意执行一定是在获取params[2].Value之前运行,否则获取不到真正的符合条件的数据行数totalcount

 DataSet dt=DbHelperSQL.RunProcedure(prodname,params,"list");

 if(params[2].Value!=null)

{

  totalcount=int.Parse(params[2].Value.ToString());

}

 return ds.Tables[0];

}

 

BLL层:

public List<表实体>   GetListByPage(int pageIndex,int pageSize,out int totalcount)

{

  DataTable dt=dal.GetListByPage(pageIndex,pageSize,out totalcount);

  return DataTableToList(dt);

}

 

Site层:

public void GetListByPage()

{

    //1.0 接受ajax请求或者url请求传递过来的参数

    string pageIndex=Request.QueryString["pageIndex"];

    string pageSize=Request.Querystrinig["pageSize"];

    //2.0 参数合法性验证,判断是否为Int

    ..........

    //3.0 把pageIndex和pageSize转为int,作为参数传递

    int ipageIndex=int.Parse(pageIndex);

    int ipageSize=int.Parse(pageSize);

    int totalcount=0;

    //4.0 调用bll层的分页方法

    List<表实体> list =  bll.GetDataListByPage(ipageIndex,ipageSize,out totalcount);

    

    --在这里有一个问题,我肯定要返回list给前端,但是还要返回totalcount这个总行数,还是返回totalcount/pagesize=总页数,这我就说不定了,这是就要开始

    --研究我们的分页控件了。

举例:jPageinate 分页控件

分页控件的使用,看下编文章

    //5.0 根据totalcount 和 pagesize 计算出总页数,由于计算有可能是小数,所以应该取得大于此小数的最小整数,如10.1 ,应该取11

    decimal totalpage=Math.Ceiling(totalcount / Convert.ToDecimal(ipageSize.ToString()));//因为Math.Ceiling()只能接受double或者decimal参数

   //6.0 将数据集合和分页的相关参数响应回给异步对象

    AjaxPage obj=new AjaxPage();

   obj.status="成功";

   obj.datas=list;

   obj.totalcount=totalcount;

   obj.totalpage=totalpage;

  //6.0 利用json序列化器,把obj这个分页实体序列化,返回给异步对象

   return calback+"序列化分页实体";

}

 

转载于:https://www.cnblogs.com/yao-lin/p/4090745.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值