四、Pager类改造
经过分析我们发现Pager是通过ToString()方法将分页字符串输出到前台的,所以我们这里需要先改造Pager的ToString()方法。我们常常希望分页是这样显示的:
上一页 1 2 3 4 5 6 下一页,所以先将ToString()方法改造如下:
ToString方法
1 public override string ToString() 2 { 3 if (_pagination.TotalItems == 0) 4 { 5 return null; 6 } 7 8 var builder = new StringBuilder(); 9 10 builder.Append("<div class=" + _pageStyle + ">"); 11 12 if (_pagination.PageNumber > 1) 13 builder.Append(CreatePageLink(_pagination.PageNumber - 1, _pagePrev)); 14 else 15 builder.Append(CreatePageText(_pagePrev)); 16 for (int i = 0; i < _pagination.TotalPages; i++) 17 { 18 var current = i + 1; 19 if (current == _pagination.PageNumber) 20 { 21 builder.Append(CreatePageText(current.ToString())); 22 } 23 else 24 { 25 builder.Append(CreatePageLink(current, current.ToString())); 26 } 27 builder.Append(" "); 28 } 29 30 if (_pagination.PageNumber < _pagination.TotalPages) 31 builder.Append(CreatePageLink(_pagination.PageNumber + 1, _pageNext)); 32 else 33 builder.Append(CreatePageText(_pageNext)); 34 builder.Append(@"</div>"); 35 36 return builder.ToString(); 37 } |
这里需要交代一下将要实现查询分页的原理,这个方案中我们将会把查询的信息附加到分页的Url上,首先我们会把需要附加的条件添加到一个Dictionary<string, string>类中,然后传给Pager类进行处理。