首页 > 代码库 > 分页之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#封装存储过程