(转)一个带自定义分页,排序功能的DATAGRID控件(公开源码)
生活随笔
收集整理的這篇文章主要介紹了
(转)一个带自定义分页,排序功能的DATAGRID控件(公开源码)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
??
? 因為項目需要,要弄個有這樣功能的控件。要有自定意分頁和排序的功能。在這個控件里面數(shù)據(jù)的綁定都是用DataView來實現(xiàn),DataView放在Session里,如果大家有更靈活的方法可以留言給我。Session的名字我已經(jīng)做成了屬性叫sessionName,可以直接設(shè)置,你們喜歡叫什么就自己改吧。以下是完整的代碼,由于是剛剛出爐,可能會有考慮不足的地方,希望使用或修改的朋友多提意見一起交流,我分享我快樂:)
下面是可以使用的控件
先下載過的朋友,那個DLL文件有問題,下這個新的,下面的程序代碼也改了一個小地方271行
該控件使用方法和DataGrid一樣,需要分頁時必須設(shè)置分頁功能為true
LcDataGrid.rar
??2using?System.Web.UI;
??3using?System.Web.UI.WebControls;
??4using?System.ComponentModel;
??5using?System.Data;
??6
??7namespace?LcWebControls
??8{
??9????/**////?<summary>
?10????///?盧昶?2005-7-11
?11????///?Email:darkangel@ynmail.com
?12????///?msn:darkangellc@msn.com
?13????///?</summary>
?14????[DefaultProperty("Text"),?
?15????????ToolboxData("<{0}:LcDataGrid?runat=server></{0}:LcDataGrid>")]
?16????public?class?LcDataGrid?:?System.Web.UI.WebControls.DataGrid
?17????{
?18Define#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
?33displayPortery#region?displayPortery
?34
?35????????public?int?Currindex
?36????????{
?37????????????set
?38????????????{
?39????????????????try
?40????????????????{
?41?????????????????????this.CurrentPageIndex=value;
?42????????????????}
?43????????????????catch
?44????????????????{
?45????????????????????
?46????????????????}
?47????????????????
?48????????????}
?49????????????get
?50????????????{
?51??????????????return?this.CurrentPageIndex;
?52????????????}
?53????????}
?54#endregion????
?55Property#region?Property
?56
?57
?58????????[Bindable(true),?
?59????????????Category("Appearance"),?
?60????????????DefaultValue("")]?
?61????????public?string?Text?
?62????????{
?63????????????get
?64????????????{
?65????????????????return?text;
?66????????????}
?67
?68????????????set
?69????????????{
?70????????????????text?=?value;
?71????????????}
?72????????}
?73????????[Bindable(true),?
?74????????Category("Appearance"),?
?75????????DefaultValue(""),
?76????????DescriptionAttribute("Session的名稱,Session用于數(shù)據(jù)綁定,必須是DataView類型")
?77????????]?
?78????????public?string?sessionName
?79????????{
?80????????????get
?81????????????{
?82????????????????return?sessionname;
?83????????????}
?84????????????set
?85????????????{
?86????????????????sessionname=value;
?87
?88????????????}
?89????????}
?90????????[Bindable(true),?
?91????????????Category("Appearance"),?
?92????????????DefaultValue("")]?
?93????????????public?string?TT
?94????????????{
?95????????????????get
?96????????????????{
?97????????????????????try
?98????????????????????{
?99????????????????????????
100????????????????????????return?this.ViewState["sort"].ToString();
101????????????????????}
102????????????????????catch
103????????????????????{
104?????????????????????????this.ViewState["sort"]="asc";
105????????????????????????return?this.ViewState["sort"].ToString();
106????????????????????}
107????????????????????
108????????????????}
109????????????????set
110????????????????{
111????????????????????this.ViewState["sort"]=value;
112????????????????}
113
114????????????}
115????????
116????#endregion
117
118????????/**////?<summary>?
119????????///?將此控件呈現(xiàn)給指定的輸出參數(shù)。
120????????///?</summary>
121????????///?<param?name="output">?要寫出到的?HTML?編寫器?</param>
122
123protected?override?void?OnItemCreated(DataGridItemEventArgs?e)
124????????{????
125
126????????????if(e.Item.ItemType?==?ListItemType.Pager)
127????????????{
128????????????????e.Item.Cells[0].Controls.Clear();
129????????????????TextBox?tb=new?TextBox();
130????????????????creatControl(e.Item.Cells[0]);
131????????????}
132
133?????????
134????????}
135protected?override?void?OnItemCommand(DataGridCommandEventArgs?e)
136????????{
137????????????string?strCommandName?=?e.CommandName;
138????????????if(e.CommandName?==?null)?
139????????????????return;
140
141????????????strCommandName?=?string.IsInterned(strCommandName);
142????????????switch(e.CommandName)
143????????????{
144????????????
145????????????????case?"PrevPAGE":
146????????????????{
147????????????????????PrevPAGE_Click(null,null);
148????????????????????break;
149????????????????}
150????????????????case?"NextPAGE":
151????????????????{
152????????????????????NextPAGE_Click(null,null);
153????????????????????break;
154????????????????}
155????????????????
156????????????}
157????????????base.OnItemCommand(e);
158????????}
159????
160protected?override?void?OnItemDataBound(DataGridItemEventArgs?e)
161{
162????????????
163???????????if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
164????????????{
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????????{
172????????????base.OnSortCommand?(e);
173????????????DataView?dv=(DataView)this.Page.Session[sessionName];
174????????????if?(TT.Equals("desc"))
175????????????{
176????????????????dv.Sort=e.SortExpression+"?asc";
177????????????????TT="asc";
178????????????}
179????????????else
180????????????{
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
191
192????
193
194InitDataGird#region?InitDataGird
195
196????????protected?void?creatControl(TableCell?tc)
197????????{
198
199????????????creatPageCount(tc);
200????????????creatCount(tc);
201????????????creatSPage(tc);
202????????????creatDDL(tc);
203
204
205????????}
206????????private?void?creatCount(TableCell?tc)
207????????{
208????????
209????????????lbtag.Text="??每頁顯示記錄數(shù)";
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
219????????}
220????????
221????????private?void?creatPageCount(TableCell?tc)
222????????{
223????????????Label?lb=new?Label();
224????????????lb.Text="<P?align=\"right\">?共"+this.PageCount+"頁????第"+(this.CurrentPageIndex+1)+"頁??";
225????????????tc.Controls.Add(lb);
226
227????????}
228????
229????????private?void?creatSPage(TableCell?tc)
230????????{
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????????{
240????????????
241????????????lbend.Text="頁</p>";
242????????????lbddls.Text="??跳轉(zhuǎn)到第";
243????????????ddl.AutoPostBack=true;
244????????????ddl.EnableViewState=true;
245????????????if?(!this.Page.IsPostBack)
246????????????{
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????????{
257????????????int?count=this.PageCount;
258????????????
259????????????for?(int?i=1;i<=count;i++)
260????????????{
261????????????????ddl.Items.Add(i.ToString());
262????????????????
263????????????}
264????????}
265????????#endregion
266InitEvent#region?InitEvent
267????????private?void?bt_Click(object?sender,?EventArgs?e)
268????{
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????????{
276????????????int?con=this.CurrentPageIndex;
277????????????if?(this.CurrentPageIndex-1<0)
278????????????{
279????????????????
280
281????????????}
282????????????else
283????????????{
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????????{
292????????????int?con=this.CurrentPageIndex;
293????????????if?(this.CurrentPageIndex>=this.PageCount-1)
294????????????{
295????????????????
296????????????}
297????????????else
298????????????{
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????????{
307????????????int?curri=Convert.ToInt16(ddl.SelectedValue)?-?1;
308????????????this.CurrentPageIndex=curri;
309????????????BindGrid();
310????????}
311
312????????#endregion
313GridFunction#region?GridFunction
314private?void?BindGrid()
315{
316????this.DataSource=(DataView)Page.Session[sessionName];
317????this.DataBind();
318
319}
320????????#endregion
321
322????????
323????}
324}
325
轉(zhuǎn)載于:https://www.cnblogs.com/zgqys1980/archive/2006/08/19/481164.html
總結(jié)
以上是生活随笔為你收集整理的(转)一个带自定义分页,排序功能的DATAGRID控件(公开源码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实现集合类的元素删除和修改的一点实践。。
- 下一篇: xslt中的Javascript取得xm