因为项目需要,要弄个有这样功能的控件。要有自定意分页和排序的功能。在这个控件里面数据的绑定都是用DataView来实现,DataView放在Session里,如果大家有更灵活的方法可以留言给我。Session的名字我已经做成了属性叫 sessionName,可以直接设置,你们喜欢叫什么就自己改吧。以下是完整的代码,由于是刚刚出炉,可能会有考虑不足的地方,希望使用或修改的朋友多提意见一起交流,我分享我快乐:)
下面是可以使用的控件
先下载过的朋友,那个DLL文件有问题,下这个新的,下面的程序代码也改了一个小地方271行
该控件使用方法和DataGrid一样,需要分页时必须设置分页功能为true
LcDataGrid.rar
1
using
System;
2
using
System.Web.UI;
3
using
System.Web.UI.WebControls;
4
using
System.ComponentModel;
5
using
System.Data;
6
![](http://img.e-com-net.com/image/info5/f63036755694437ab1d0ef63ba2724b7.gif)
7
namespace
LcWebControls
8
![](http://img.e-com-net.com/image/info5/144fd6bef7604c1bbfc66b5260adc320.gif)
{
9![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
/**//// <summary>
10
/// 卢昶 2005-7-11
11
/// Email:[email protected]
12
/// msn:[email protected]
13
/// </summary>
14
[DefaultProperty("Text"),
15
ToolboxData("<{0}:LcDataGrid runat=server></{0}:LcDataGrid>")]
16
public class LcDataGrid : System.Web.UI.WebControls.DataGrid
17![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
18![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
Define#region Define
19
private string text;
20
private System.Web.UI.WebControls.Button bt=new Button();
21
private TextBox tb=new TextBox();
22
private System.Web.UI.Page pg=new Page();
23
private string sessionname;
24
private LinkButton PrevPAGE=new LinkButton();
25
private LinkButton NextPAGE=new LinkButton();
26
private DropDownList ddl=new DropDownList();
27
private Label lbend=new Label();
28
private Label lbtag=new Label();
29
private Label lbddls=new Label();
30
private Label lbddle=new Label();
31
32
#endregion
33![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
displayPortery#region displayPortery
34![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
35
public int Currindex
36![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
37
set
38![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
39
try
40![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
41
this.CurrentPageIndex=value;
42
}
43
catch
44![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
45
46
}
47
48
}
49
get
50![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
51
return this.CurrentPageIndex;
52
}
53
}
54
#endregion
55![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
Property#region Property
56![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
57![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
58
[Bindable(true),
59
Category("Appearance"),
60
DefaultValue("")]
61
public string Text
62![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
63
get
64![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
65
return text;
66
}
67![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
68
set
69![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
70
text = value;
71
}
72
}
73
[Bindable(true),
74
Category("Appearance"),
75
DefaultValue(""),
76
DescriptionAttribute("Session的名称,Session用于数据绑定,必须是DataView类型")
77
]
78
public string sessionName
79![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
80
get
81![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
82
return sessionname;
83
}
84
set
85![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
86
sessionname=value;
87![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
88
}
89
}
90
[Bindable(true),
91
Category("Appearance"),
92
DefaultValue("")]
93
public string TT
94![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
95
get
96![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
97
try
98![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
99
100
return this.ViewState["sort"].ToString();
101
}
102
catch
103![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
104
this.ViewState["sort"]="asc";
105
return this.ViewState["sort"].ToString();
106
}
107
108
}
109
set
110![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
111
this.ViewState["sort"]=value;
112
}
113![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
114
}
115
116
#endregion
117![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
118![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
/**//// <summary>
119
/// 将此控件呈现给指定的输出参数。
120
/// </summary>
121
/// <param name="output"> 要写出到的 HTML 编写器 </param>
122![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
123
protected override void OnItemCreated(DataGridItemEventArgs e)
124![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
125![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
126
if(e.Item.ItemType == ListItemType.Pager)
127![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
128
e.Item.Cells[0].Controls.Clear();
129
TextBox tb=new TextBox();
130
creatControl(e.Item.Cells[0]);
131
}
132![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
133
134
}
135
protected override void OnItemCommand(DataGridCommandEventArgs e)
136![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
137
string strCommandName = e.CommandName;
138
if(e.CommandName == null)
139
return;
140![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
141
strCommandName = string.IsInterned(strCommandName);
142
switch(e.CommandName)
143![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
144
145
case "PrevPAGE":
146![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
147
PrevPAGE_Click(null,null);
148
break;
149
}
150
case "NextPAGE":
151![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
152
NextPAGE_Click(null,null);
153
break;
154
}
155
156
}
157
base.OnItemCommand(e);
158
}
159
160
protected override void OnItemDataBound(DataGridItemEventArgs e)
161![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
![](http://img.e-com-net.com/image/info5/b67159a69bef497d850cae2241306bd2.gif)
{
162
163
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
164![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
165
e.Item.Attributes.Add("style","cursor:hand");
166
e.Item.Attributes.Add("onmouseover","this.style.backgroundColor='#FFCC00'");
167
e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=''");
168
}
169
}
170
protected override void OnSortCommand(DataGridSortCommandEventArgs e)
171![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
172
base.OnSortCommand (e);
173
DataView dv=(DataView)this.Page.Session[sessionName];
174
if (TT.Equals("desc"))
175![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
176
dv.Sort=e.SortExpression+" asc";
177
TT="asc";
178
}
179
else
180![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
181
dv.Sort=e.SortExpression+" desc";
182
TT="desc";
183
}
184
185
186
this.DataSource=dv;
187
this.DataBind();
188
this.Page.Session[sessionName]=dv;
189
}
190![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
191![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
192
193![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
194![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
InitDataGird#region InitDataGird
195![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
196
protected void creatControl(TableCell tc)
197![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
198![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
199
creatPageCount(tc);
200
creatCount(tc);
201
creatSPage(tc);
202
creatDDL(tc);
203![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
204![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
205
}
206
private void creatCount(TableCell tc)
207![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
208
209
lbtag.Text=" 每页显示记录数";
210
tb.Text=this.PageSize.ToString();
211
tb.Width=20;
212
bt.Text="提交";
213
bt.Click+=new EventHandler(bt_Click);
214
tc.Controls.Add(lbtag);
215
tc.Controls.Add(tb);
216
tc.Controls.Add(bt);
217
//
218![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
219
}
220
221
private void creatPageCount(TableCell tc)
222![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
223
Label lb=new Label();
224
lb.Text="<P align=/"right/"> 共"+this.PageCount+"页 第"+(this.CurrentPageIndex+1)+"页 ";
225
tc.Controls.Add(lb);
226![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
227
}
228
229
private void creatSPage(TableCell tc)
230![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
231
PrevPAGE.Text="上一页";
232
NextPAGE.Text="下一页";
233
PrevPAGE.CommandName="PrevPAGE";
234
NextPAGE.CommandName="NextPAGE";
235
tc.Controls.Add(PrevPAGE);
236
tc.Controls.Add(NextPAGE);
237
}
238
private void creatDDL(TableCell tc)
239![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
240
241
lbend.Text="页</p>";
242
lbddls.Text=" 跳转到第";
243
ddl.AutoPostBack=true;
244
ddl.EnableViewState=true;
245
if (!this.Page.IsPostBack)
246![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
247
ddl.Items.Clear();
248
initDDL();
249
}
250
ddl.SelectedIndexChanged+=new EventHandler(ddl_SelectedIndexChanged);
251
tc.Controls.Add(lbddls);
252
tc.Controls.Add(ddl);
253
tc.Controls.Add(lbend);
254
}
255
private void initDDL()
256![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
257
int count=this.PageCount;
258
259
for (int i=1;i<=count;i++)
260![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
261
ddl.Items.Add(i.ToString());
262
263
}
264
}
265
#endregion
266![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
InitEvent#region InitEvent
267
private void bt_Click(object sender, EventArgs e)
268![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
269
this.PageSize=Convert.ToInt32(tb.Text);
270
ddl.Items.Clear();
271
initDDL();
this.CurrentPageIndex=0;
272
BindGrid();
273
}
274
private void PrevPAGE_Click(object sender, EventArgs e)
275![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
276
int con=this.CurrentPageIndex;
277
if (this.CurrentPageIndex-1<0)
278![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
279
280![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
281
}
282
else
283![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
284
this.CurrentPageIndex=con-1;
285
}
286
ddl.SelectedValue=(this.CurrentPageIndex+1).ToString();
287
BindGrid();
288
289
}
290
private void NextPAGE_Click(object sender, EventArgs e)
291![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
292
int con=this.CurrentPageIndex;
293
if (this.CurrentPageIndex>=this.PageCount-1)
294![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
295
296
}
297
else
298![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
299
this.CurrentPageIndex=con+1;
300
}
301
ddl.SelectedValue=(this.CurrentPageIndex+1).ToString();
302
BindGrid();
303
304
}
305
private void ddl_SelectedIndexChanged(object sender, EventArgs e)
306![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
{
307
int curri=Convert.ToInt16(ddl.SelectedValue) - 1;
308
this.CurrentPageIndex=curri;
309
BindGrid();
310
}
311![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
312
#endregion
313![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
GridFunction#region GridFunction
314
private void BindGrid()
315![](http://img.e-com-net.com/image/info5/f248b83ec1f74e2eb701598909e98c66.gif)
![](http://img.e-com-net.com/image/info5/b67159a69bef497d850cae2241306bd2.gif)
{
316
this.DataSource=(DataView)Page.Session[sessionName];
317
this.DataBind();
318![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
319
}
320
#endregion
321![](http://img.e-com-net.com/image/info5/48a58737151a45bf840580c8efbfca0c.gif)
322
323
}
324
}
325