首页 > 代码库 > 分页之C#封装存储过程

分页之C#封装存储过程

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 分页控件

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

 

 

 

 

 

 

 

 

 

 

 

 

 

}

 

分页之C#封装存储过程