大家好~!我是2月18号的博主——博主一号~~~
首先,欢迎你进入《2月18号》~!
然后,开始今天的话题吧。
1.首先aspx页面 套用了 母版页 ,然后再aspx页面里拖入自己写的分页web用户控件,这里就出现问题了,每一个东东都有自己Page_Load方法。这执行顺序何来?
2.实践出真知,我再每个Page_Load方法中,都输入了一句输出自己的语句。response.write("这是aspx页面"); ...知道的别拍砖,不知道的可以自己实践一下。
3.哈哈,元方得知后,没等我问,抢着就说了:执行顺序是这样的,aspx页面→母版页→web用户控件。
4.然后是一片掌声那。。。。声声入耳,如雷贯耳啊....
得知这样执行顺序之后,就知道该咋写自己的分页web用户控件了,也知道该啥时候调用了。代码贴上
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
protected string strPaging;//存储页码条 private int _currentPage; //表示当前页 private int _pageCount;//表示总页数 public int PageCount { get { return _pageCount; } set { _pageCount = value; } } public int CurrentPage { get { return _currentPage; } set { _currentPage = value; } } protected void Page_Load(object sender, EventArgs e) { string categoryId = string.Empty; string orderby = string.Empty; if (PageCount <= 1) { return; } //起始页 int start = CurrentPage - 5; if (start <= 1) { start = 1; } int end = start + 9; if (end > PageCount) { end = PageCount; start = end - 9 > 0 ? end - 9 : 1; } if (!string.IsNullOrEmpty(Request.QueryString["categoryId"])) { categoryId = Request.QueryString["categoryId"]; } if (!string.IsNullOrEmpty(Request.QueryString["orderby"])) { orderby = Request.QueryString["orderby"]; } StringBuilder sb = new StringBuilder(); // sb.Append(string.Format("<a href=?page=1> 首页 </a>")); if (CurrentPage > 1) { //因为orderby传的数据 加了 空格的原因,所以 加了 Server.UrlEncode(orderby) 程序才能正常,搞了好久。要不 空格后面的排序条件升序还是降序 就会 丢掉。 sb.Append(string.Format("<a href=?page={0}&categoryId={1}&orderby={2}> 上一页 </a>", CurrentPage - 1, categoryId, Server.UrlEncode(orderby))); } for (int i = start; i <= end; i++) { if (i == CurrentPage) { sb.Append(" " + i + " "); } else { sb.Append(string.Format("<a href=?page={0}&categoryId={1}&orderby={2}> [" + i + "] </a>", i, categoryId, Server.UrlEncode(orderby))); } } if (CurrentPage < PageCount) { sb.Append(string.Format("<a href=?page={0}&categoryId={1}&orderby={2}> 下一页 </a>", CurrentPage + 1, categoryId, Server.UrlEncode(orderby))); } // sb.Append(string.Format("<a href=?page={0}> 末页 </a>", PageCount)); strPaging = sb.ToString(); }
<p style="font-size:14px"><%=strPaging%></p> //再前台写了个p标签,来展示分页数据
然后,就是再aspx页面的时候,得到总页数赋值给PageCount属性,得到当前页赋值给CurrentPage属性。
需要注意的几个问题,我里面写了几个排序,可以按照日期和价格来排序,因为ispostback的原因,不能用post的方式提交,这样导致,不会绑定数据给分页web用户控件的两个属性,所以,我再aspx页的时候,做了url重新拼接,重定向发送一次get请求,这样就一切ok了。
还要注意的一个问题就是排序方式是:asc方式,还desc方式时,我当时传参是这样的:“UnitPrice asc” .这样传入url的时候,会将UnitPrice后面的排序方式落下。传入参数的时候记得加上server.UrlEncode("UnitPrice asc"); 这样传的话,就不会落下。
坐等大家的吐槽,嘿嘿~~~~