在展现列表时通常会用到分页 分页可以去引用ajax的封装包进行分页显示 也可以自己写一个分页
以下就是自己编写的分页
现在需要展现的框架内设置一个ID 再加上格式 再加上分页控件
<div class="row" id="imglist"> </div> <%--分页控件--%> <div class="row"> <div class="col-md-12 text-right"> <nav aria-label="Page navigation"> <ul class="pagination pagination-lg" id="fenye"> </ul> </nav> </div> </div>
先引用一个正则 搜索需要取得值
//获取Url参数 function getUrlParam(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; }
然后在开始写js
<script type="text/javascript"> //记录一页有几条数据 var count = 9; //记录产品分类 var type = ""; //页面加载完成后 $(function () { //当前第一页 var page = 1; //判断 如果Type等于空 则Type等于正则取到的Type if (getUrlParam("Type") != null) { type = getUrlParam("Type"); } GetImgList(page) //更改类型方法 }); function GebgGai(LeiXing) { Type = LeiXing; var page = 1; GetImgList(page) } //前台后台请求数据方法 传递当前第几页 一夜多少条 function GetImgList(page) { $.ajax( { type: "POST", url: "../Etp/EtpList.ashx?action=GetQueryList", data: { page: page, count: count, type: type }, contentType: "application/x-www-form-urlencoded", dataType: "json", async: false, cache: false, success: function (data) { debugger; //总条数 var total = data.total; //将查询到的图片列表数据赋给imgList var imgList = data.rows; var imgHtml = ""; //遍历查询到的图片列表数据并且拼接成展现出来的HTML for (var i = 0; i < imgList.length; i++) { //imgList等于imgList+div框架的Class 跟属性一起写过来 用''来分开后台代码和前台代码 imgHtml = imgHtml + '<div class=" col-md-4" style="height: 274px;"><div style = "width: 314.83px; height: 214px;" class="cptu" ><a href="ProductDetails.aspx?FId=' + imgList[i].FId + '"><img style="width: 314.83px; height: 214px;" src="' + imgList[i].FImg + '" /></a></div ><div class="col-md-3" style="height: 40px; text-align: center; width: 341.83px; margin-left: -15px;"><a href="ProductDetails.aspx?FId=' + imgList[i].FId + '" style="text-decoration: none; line-height: 40px; font-size: 20px;">' + imgList[i].FName + '</a></div></div>'; }//清除原有数据 $("#imglist").html(""); //渲染新的图片列表数据 $("#imglist").html(imgHtml); //计算分页 总条数 除 每页的条数 var fenye = Math.ceil(total / count); //分页html var fenyeHtml = ""; //判断是否要头 if (page - 2 > 1) { if (fenye > 5) { //要头 fenyeHtml = '<li><a href ="javascript:void(0);" onclick="GetImgList(1)" aria - label="Previous" ><span aria-hidden="true">«</span></a ></li >'; } ///处理的 678 if (fenye - page <= 2) { //不要尾 //page=4 fenye=5 //向前加4-(fenye-page) for (var i = 4 - (fenye - page); i > 0; i--) { fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(' + (page - i) + ')">' + (page - i) + '</a></li>'; } fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" style="background-color:red" onclick="GetImgList(' + page + ')">' + page + '</a></li>'; //加几=fenye-page for (var i = 1; i <= fenye - page; i++) { fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(' + (page + i) + ')">' + (page + i) + '</a></li>'; } } else { debugger; //正常+2 fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" style="background-color:red" onclick="GetImgList(' + page + ')">' + page + '</a></li>'; fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(' + (page + 1) + ')">' + (page + 1) + '</a></li>'; fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(' + (page + 2) + ')">' + (page + 2) + '</a></li>'; //要尾 fenyeHtml = fenyeHtml + '<li>< a href = "javascript:void(0);" onclick="GetImgList(' + fenye + ')" aria - label="Next" ><span aria-hidden="true">»</span></a ></li >'; } } else { //1 2 3 //不要头 //如果小于3 if (page < 3) { //12 //减几=page-1 if (page == 2) { fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(1)">1</a></li>'; } //正常值 fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" style="background-color:red" onclick="GetImgList(' + page + ')">' + page + '</a></li>'; } else { //3 fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(1)">1</a></li>'; fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(2)">2</a></li>'; fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" style="background-color:red" onclick="GetImgList(3)">3</a></li>'; } //page+3 是不是大于分页数 if (page + (5 - page) > fenye) { //不能加那么多 加几= fenye-page for (var i = 1; i <= fenye - page; i++) { fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(' + (page + i) + ')" >' + (page + i) + '</a></li>'; } } else { //正常加 5-page for (var i = 1; i <= 5 - page; i++) { fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(' + (page + i) + ')">' + (page + i) + '</a></li>'; } } if (fenye > 5) { fenyeHtml = fenyeHtml + '<li>< a href = "javascript:void(0);" onclick="GetImgList(' + fenye + ')" aria - label="Next" ><span aria-hidden="true">»</span></a ></li >'; } } //清除原分页 $("#fenye").html(""); //载入新分页 $("#fenye").html(fenyeHtml); } }); } </script>
在开始编写后台代码 后台代码在ashx里边编写
/// <summary> /// 前台分页查询产品列表 /// </summary> /// <param name="context"></param> public void GetQueryList(HttpContext context) { //声明一个动态类 初始化一个新的动态类方法 dynamic OnjJson = new ExpandoObject(); //取值 当前第几页 int page = Convert.ToInt32(context.Request["page"]); //取值 每页几条数据 int count = Convert.ToInt32(context.Request["count"]); //取值 当前的类型 string Type =context.Request["Type"]; //最小条数 int offset = (page - 1) * count; //声明一个新的BLL方法 Maticsoft.BLL.T_Products productsBll = new Maticsoft.BLL.T_Products(); //总条数从0开始 int total = 0; //返回数据的行数内容 OnjJson.rows = productsBll.GetQueryList(count, offset, Type, out total); //返回数据的总条数 OnjJson.total = total; context.Response.Write(JsonConvert.SerializeObject(OnjJson)); context.Response.End(); }
调用BLL方法
/// <summary> /// 前台分页查询产品数据 /// </summary> /// <param name="limit">条数</param> /// <param name="offset">最小条数</param> /// <param name="Type">产品的类型</param> /// <param name="total">返回总条数 out返回(给后台一张纸(纸默认是空白的且不可以向后台传) 后台要把纸回给前台。纸上可以输出值)</param> /// <returns></returns> public DataTable GetQueryList(int limit, int offset, string Type, out int total) { return dal.GetQueryList(limit, offset, Type, out total); }
通过BLL调用dal方法 并使用SQL语句查询并返回查询到的数值
/// <summary> /// 前台分页查询产品数据 /// </summary> /// <param name="limit">条数</param> /// <param name="offset">最小条数</param> /// <param name="Type">产品的类型</param> /// <param name="total">返回总条数</param> /// <returns></returns> public DataTable GetQueryList(int limit, int offset, string Type, out int total) { //判断前台传过来的Type是否为空 如果为空则查询全部信息 如果有Type 则查询Type的信息 if(Type=="") { //使用sql语句分页查询数据 string sql = "select top (@limit) * from (select row_number() over(order by FId desc) as rownumber,* from T_Products ) temp_row where rownumber>@offset "; //计算数据总条数 string totalsql = "select COUNT(1) from T_Products "; total = Convert.ToInt32(SqlHelper.ExecuteScalar(SqlHelper.connStr, totalsql)); //使用键值对 对sql语句里的占位建进行替换 SqlParameter[] para = new SqlParameter[] { new SqlParameter("@limit",SqlDbType.Int), new SqlParameter("@offset",SqlDbType.Int), }; para[0].Value = limit; para[1].Value = offset; //返回一个Table return SqlHelper.ExecuteDataTable(SqlHelper.connStr, sql, para); } else { //有类型 就使用以下方法查询数据 //使用sql语句分页查询数据 string sql = "select top (@limit) * from (select row_number() over(order by FId desc) as rownumber,* from T_Products where Ftype=@Ftype) temp_row where rownumber>@offset "; //计算数据总条数 string totalsql = "select COUNT(1) from T_Products where Ftype=@Ftype"; total = Convert.ToInt32(SqlHelper.ExecuteScalar(SqlHelper.connStr, totalsql, new SqlParameter[] { new SqlParameter("@Ftype",Type) })); //使用键值对 对sql语句里的占位建进行替换 SqlParameter[] para = new SqlParameter[] { new SqlParameter("@limit",SqlDbType.Int), new SqlParameter("@offset",SqlDbType.Int), new SqlParameter("@Ftype",Type) }; para[0].Value = limit; para[1].Value = offset; para[2].Value = Type; //返回一个Table return SqlHelper.ExecuteDataTable(SqlHelper.connStr, sql, para); } }
最后将返回值填写到imgHtml = imgHtml + ’ ‘ 就可以了
<script type="text/javascript"> //记录一页有几条数据 var count = 9; //记录产品分类 var type = ""; //页面加载完成后 $(function () { //当前第一页 var page = 1; //判断 如果Type等于空 则Type等于正则取到的Type if (getUrlParam("Type") != null) { type = getUrlParam("Type"); }
GetImgList(page) //更改类型方法
}); function GebgGai(LeiXing) { Type = LeiXing; var page = 1; GetImgList(page) } //前台后台请求数据方法 传递当前第几页 一夜多少条 function GetImgList(page) { $.ajax( { type: "POST", url: "../Etp/EtpList.ashx?action=GetQueryList", data: { page: page, count: count, type: type }, contentType: "application/x-www-form-urlencoded", dataType: "json", async: false, cache: false, success: function (data) { debugger; //总条数 var total = data.total; //将查询到的图片列表数据赋给imgList var imgList = data.rows; var imgHtml = ""; //遍历查询到的图片列表数据并且拼接成展现出来的HTML for (var i = 0; i < imgList.length; i++) { //imgList等于imgList+div框架的Class 跟属性一起写过来 用''来分开后台代码和前台代码 imgHtml = imgHtml + '<div class=" col-md-4" style="height: 274px;"><div style = "width: 314.83px; height: 214px;" class="cptu" ><a href="ProductDetails.aspx?FId=' + imgList[i].FId + '"><img style="width: 314.83px; height: 214px;" src="' + imgList[i].FImg + '" /></a></div ><div class="col-md-3" style="height: 40px; text-align: center; width: 341.83px; margin-left: -15px;"><a href="ProductDetails.aspx?FId=' + imgList[i].FId + '" style="text-decoration: none; line-height: 40px; font-size: 20px;">' + imgList[i].FName + '</a></div></div>'; }//清除原有数据 $("#imglist").html(""); //渲染新的图片列表数据 $("#imglist").html(imgHtml); //计算分页 总条数 除 每页的条数 var fenye = Math.ceil(total / count); //分页html var fenyeHtml = ""; //判断是否要头 if (page - 2 > 1) { if (fenye > 5) { //要头 fenyeHtml = '<li><a href ="javascript:void(0);" onclick="GetImgList(1)" aria - label="Previous" ><span aria-hidden="true">«</span></a ></li >'; } ///处理的 678 if (fenye - page <= 2) { //不要尾 //page=4 fenye=5 //向前加4-(fenye-page) for (var i = 4 - (fenye - page); i > 0; i--) { fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(' + (page - i) + ')">' + (page - i) + '</a></li>'; } fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" style="background-color:red" onclick="GetImgList(' + page + ')">' + page + '</a></li>'; //加几=fenye-page for (var i = 1; i <= fenye - page; i++) { fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(' + (page + i) + ')">' + (page + i) + '</a></li>'; } } else { debugger; //正常+2 fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" style="background-color:red" onclick="GetImgList(' + page + ')">' + page + '</a></li>'; fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(' + (page + 1) + ')">' + (page + 1) + '</a></li>'; fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(' + (page + 2) + ')">' + (page + 2) + '</a></li>';
//要尾 fenyeHtml = fenyeHtml + '<li>< a href = "javascript:void(0);" onclick="GetImgList(' + fenye + ')" aria - label="Next" ><span aria-hidden="true">»</span></a ></li >'; } } else { //1 2 3 //不要头 //如果小于3 if (page < 3) { //12 //减几=page-1 if (page == 2) { fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(1)">1</a></li>'; } //正常值 fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" style="background-color:red" onclick="GetImgList(' + page + ')">' + page + '</a></li>'; } else { //3 fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(1)">1</a></li>'; fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(2)">2</a></li>'; fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" style="background-color:red" onclick="GetImgList(3)">3</a></li>'; }
//page+3 是不是大于分页数 if (page + (5 - page) > fenye) { //不能加那么多 加几= fenye-page for (var i = 1; i <= fenye - page; i++) { fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(' + (page + i) + ')" >' + (page + i) + '</a></li>'; } } else { //正常加 5-page for (var i = 1; i <= 5 - page; i++) { fenyeHtml = fenyeHtml + '<li><a href="javascript:void(0);" onclick="GetImgList(' + (page + i) + ')">' + (page + i) + '</a></li>'; } }
if (fenye > 5) { fenyeHtml = fenyeHtml + '<li>< a href = "javascript:void(0);" onclick="GetImgList(' + fenye + ')" aria - label="Next" ><span aria-hidden="true">»</span></a ></li >'; }
}
//清除原分页 $("#fenye").html(""); //载入新分页 $("#fenye").html(fenyeHtml);
} }); }</script>