分析petshop3.0显示产品列表
2006-04-23 19:54 Clingingboy 阅读(545) 评论(0) 编辑 收藏 举报
用户空间中定义一个可以分页的SimplePager.cs类,这个类继承Repeater,可以实现产品的重复显示,上下翻页
在Items.aspx,ItemDetails.aspx,Category.aspx这三个页面中,重复的使用了这个用户控件显示商品
1
using System;
2
using System.Collections;
3
using System.Collections.Specialized;
4
using System.Text;
5
using System.Text.RegularExpressions;
6
using System.Web.UI;
7
using System.Web.UI.WebControls;
8![](/Images/OutliningIndicators/None.gif)
9
namespace PetShop.Web.Controls {
10
public class SimplePager : Repeater {
11![](/Images/OutliningIndicators/InBlock.gif)
12
//静态变量
13
protected const string HTML1 = "<table cellpadding=0 cellspacing=0><tr><td colspan=2>";
14
protected const string HTML2 = "</td></tr><tr class=gridNav><td>";
15
protected const string HTML3 = "</td><td align=right>";
16
protected const string HTML4 = "</td></tr></table>";
17
private static readonly Regex RX = new Regex(@"^&page=\d+", RegexOptions.Compiled);
18
private const string LINK_PREV = "<a href=?page={0}><img src=Images/buttonPrev.gif alt=Previous border=\"0\"></a>";
19
private const string LINK_MORE = "<a href=?page={0}><img src=Images/buttonMore.gif alt=More border=\"0\"></a>";
20
private const string KEY_PAGE = "page";
21
private const string COMMA = "?";
22
private const string AMP = "&";
23![](/Images/OutliningIndicators/InBlock.gif)
24
protected string emptyText;
25
private IList dataSource;
26
private int pageSize = 10;
27
private int currentPageIndex;
28
private int itemCount;
29
30
override public object DataSource {
31
set {
32
33
try{
34
dataSource = (IList)value;
35
ItemCount = dataSource.Count;
36
}catch{
37
dataSource = null;
38
ItemCount = 0;
39
}
40
}
41
}
42![](/Images/OutliningIndicators/InBlock.gif)
43
/// <summary>
44
/// 一页产品数量
45
/// </summary>
46
public int PageSize {
47
get { return pageSize; }
48
set { pageSize = value; }
49
}
50![](/Images/OutliningIndicators/InBlock.gif)
51
/// <summary>
52
/// 总有几页
53
/// </summary>
54
protected int PageCount {
55
get { return (ItemCount - 1) / pageSize; }
56
}
57![](/Images/OutliningIndicators/InBlock.gif)
58
/// <summary>
59
/// 产品数量
60
/// </summary>
61
virtual protected int ItemCount {
62
get { return itemCount; }
63
set { itemCount = value; }
64
}
65![](/Images/OutliningIndicators/InBlock.gif)
66
/// <summary>
67
/// 当前页
68
/// </summary>
69
virtual public int CurrentPageIndex {
70
get { return currentPageIndex; }
71
set { currentPageIndex = value; }
72
}
73![](/Images/OutliningIndicators/InBlock.gif)
74
public string EmptyText {
75
set { emptyText = value; }
76
}
77![](/Images/OutliningIndicators/InBlock.gif)
78
/// <summary>
79
/// 设置分页
80
/// </summary>
81
/// <param name="index"></param>
82
public void SetPage(int index) {
83
OnPageIndexChanged(new DataGridPageChangedEventArgs(null, index));
84
}
85![](/Images/OutliningIndicators/InBlock.gif)
86
override protected void OnLoad(EventArgs e) {
87
if (Visible) {
88
string page = Context.Request[KEY_PAGE];
89
int index = (page != null) ? int.Parse(page) : 0;
90
SetPage(index);
91
}
92
}
93![](/Images/OutliningIndicators/InBlock.gif)
94![](/Images/OutliningIndicators/InBlock.gif)
95
/// <summary>
96
/// 控制页面重复显示内容重写
97
/// </summary>
98
/// <param name="writer"></param>
99
override protected void Render(HtmlTextWriter writer) {
100
101
//Check there is some data attached
102
if (ItemCount == 0) {
103
writer.Write(emptyText);
104
return;
105
}
106![](/Images/OutliningIndicators/InBlock.gif)
107
//隐藏查询
108
string query = Context.Request.Url.Query.Replace(COMMA, AMP);
109
query = RX.Replace(query, string.Empty);
110![](/Images/OutliningIndicators/InBlock.gif)
111
// 写出控件第一行,表头信息
112
writer.Write(HTML1);
113
114
// 调用继承方法
115
base.Render(writer);
116![](/Images/OutliningIndicators/InBlock.gif)
117
// 表格关闭标记
118
writer.Write(HTML2);
119
120
//判断是否需要上一页下一页按钮
121
//是否需要上一页按钮
122
if (currentPageIndex > 0)
123
writer.Write(string.Format(LINK_PREV, (currentPageIndex - 1) + query));
124![](/Images/OutliningIndicators/InBlock.gif)
125
//表格关闭标记
126
writer.Write(HTML3);
127![](/Images/OutliningIndicators/InBlock.gif)
128
//是否需要下一页按钮
129
if (currentPageIndex < PageCount)
130
writer.Write(string.Format(LINK_MORE, (currentPageIndex + 1) + query));
131![](/Images/OutliningIndicators/InBlock.gif)
132
//表格关闭标记
133
writer.Write(HTML4);
134
}
135![](/Images/OutliningIndicators/InBlock.gif)
136
override protected void OnDataBinding(EventArgs e) {
137![](/Images/OutliningIndicators/InBlock.gif)
138
//找到我们想要的重复显示信息
139
int start = CurrentPageIndex * pageSize;
140
int size = Math.Min(pageSize, ItemCount - start);
141
142
IList page = new ArrayList();
143![](/Images/OutliningIndicators/InBlock.gif)
144
//从数据源中找到它们之间的关系
145
for (int i = 0; i < size; i++)
146
page.Add(dataSource[start + i]);
147
148
//得到数据源
149
base.DataSource = page;
150
base.OnDataBinding(e);
151
152
}
153![](/Images/OutliningIndicators/InBlock.gif)
154
public event DataGridPageChangedEventHandler PageIndexChanged;
155![](/Images/OutliningIndicators/InBlock.gif)
156
virtual protected void OnPageIndexChanged(DataGridPageChangedEventArgs e) {
157
if (PageIndexChanged != null)
158
PageIndexChanged(this, e);
159
}
160
}
161
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
10
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
31
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
40
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
41
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
46
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
47
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
48
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
49
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
55
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
61
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
62
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
63
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
64
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
65
![](/Images/OutliningIndicators/InBlock.gif)
66
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
67
![](/Images/OutliningIndicators/InBlock.gif)
68
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
69
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
70
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
71
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
72
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
75
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
76
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
77
![](/Images/OutliningIndicators/InBlock.gif)
78
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
82
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
85
![](/Images/OutliningIndicators/InBlock.gif)
86
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
87
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
88
![](/Images/OutliningIndicators/InBlock.gif)
89
![](/Images/OutliningIndicators/InBlock.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
92
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
93
![](/Images/OutliningIndicators/InBlock.gif)
94
![](/Images/OutliningIndicators/InBlock.gif)
95
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
96
![](/Images/OutliningIndicators/InBlock.gif)
97
![](/Images/OutliningIndicators/InBlock.gif)
98
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
99
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/InBlock.gif)
102
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
103
![](/Images/OutliningIndicators/InBlock.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
106
![](/Images/OutliningIndicators/InBlock.gif)
107
![](/Images/OutliningIndicators/InBlock.gif)
108
![](/Images/OutliningIndicators/InBlock.gif)
109
![](/Images/OutliningIndicators/InBlock.gif)
110
![](/Images/OutliningIndicators/InBlock.gif)
111
![](/Images/OutliningIndicators/InBlock.gif)
112
![](/Images/OutliningIndicators/InBlock.gif)
113
![](/Images/OutliningIndicators/InBlock.gif)
114
![](/Images/OutliningIndicators/InBlock.gif)
115
![](/Images/OutliningIndicators/InBlock.gif)
116
![](/Images/OutliningIndicators/InBlock.gif)
117
![](/Images/OutliningIndicators/InBlock.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/InBlock.gif)
120
![](/Images/OutliningIndicators/InBlock.gif)
121
![](/Images/OutliningIndicators/InBlock.gif)
122
![](/Images/OutliningIndicators/InBlock.gif)
123
![](/Images/OutliningIndicators/InBlock.gif)
124
![](/Images/OutliningIndicators/InBlock.gif)
125
![](/Images/OutliningIndicators/InBlock.gif)
126
![](/Images/OutliningIndicators/InBlock.gif)
127
![](/Images/OutliningIndicators/InBlock.gif)
128
![](/Images/OutliningIndicators/InBlock.gif)
129
![](/Images/OutliningIndicators/InBlock.gif)
130
![](/Images/OutliningIndicators/InBlock.gif)
131
![](/Images/OutliningIndicators/InBlock.gif)
132
![](/Images/OutliningIndicators/InBlock.gif)
133
![](/Images/OutliningIndicators/InBlock.gif)
134
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
135
![](/Images/OutliningIndicators/InBlock.gif)
136
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
137
![](/Images/OutliningIndicators/InBlock.gif)
138
![](/Images/OutliningIndicators/InBlock.gif)
139
![](/Images/OutliningIndicators/InBlock.gif)
140
![](/Images/OutliningIndicators/InBlock.gif)
141
![](/Images/OutliningIndicators/InBlock.gif)
142
![](/Images/OutliningIndicators/InBlock.gif)
143
![](/Images/OutliningIndicators/InBlock.gif)
144
![](/Images/OutliningIndicators/InBlock.gif)
145
![](/Images/OutliningIndicators/InBlock.gif)
146
![](/Images/OutliningIndicators/InBlock.gif)
147
![](/Images/OutliningIndicators/InBlock.gif)
148
![](/Images/OutliningIndicators/InBlock.gif)
149
![](/Images/OutliningIndicators/InBlock.gif)
150
![](/Images/OutliningIndicators/InBlock.gif)
151
![](/Images/OutliningIndicators/InBlock.gif)
152
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
153
![](/Images/OutliningIndicators/InBlock.gif)
154
![](/Images/OutliningIndicators/InBlock.gif)
155
![](/Images/OutliningIndicators/InBlock.gif)
156
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
157
![](/Images/OutliningIndicators/InBlock.gif)
158
![](/Images/OutliningIndicators/InBlock.gif)
159
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
160
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
161
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
在Items.aspx,ItemDetails.aspx,Category.aspx这三个页面中,重复的使用了这个用户控件显示商品