分享
 
 
 

手把手教你如何扩展GridView之个性分页

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

实现思路和上文的Excel和Word导出是一样的,就是在GridView中添加行,首先声明以下控件,用于显示页次:第几页,共多少页,多少记录,首页,上一页,下一页,尾页

用于分页的控件

Label lblCurrentPage;

Label lblPageCount;

Label lblRowsCount;

LinkButton btnFirst;

LinkButton btnPrev;

LinkButton btnNext;

LinkButton btnLast;在GridView的OnInit方法中,初始化这些控件

在控件的Oninit方法初始化分页控件

protected override void OnInit(EventArgs e)

{

this.EnableViewState = true;

lblCurrentPage = new Label();

lblCurrentPage.ForeColor = ColorTranslator.FromHtml("#e78a29");

lblCurrentPage.Text = "1";

lblPageCount = new Label();

lblPageCount.Text = "1";

lblRowsCount = new Label();

lblRowsCount.ForeColor = ColorTranslator.FromHtml("#e78a29");

btnFirst = new LinkButton();

btnFirst.Text = "首页";

btnFirst.Command += new CommandEventHandler(NavigateToPage);

btnFirst.CommandName = "Pager";

btnFirst.CommandArgument = "First";

btnPrev = new LinkButton();

btnPrev.Text = "上一页";

btnPrev.Command += new CommandEventHandler(NavigateToPage);

btnPrev.CommandName = "Pager";

btnPrev.CommandArgument = "Prev";

btnNext = new LinkButton();

btnNext.Text = "下一页";

btnNext.Command += new CommandEventHandler(NavigateToPage);

btnNext.CommandName = "Pager";

btnNext.CommandArgument = "Next";

btnLast = new LinkButton();

btnLast.Text = "尾页";

btnLast.Command += new CommandEventHandler(NavigateToPage);

btnLast.CommandName = "Pager";

btnLast.CommandArgument = "Last";

base.OnInit(e);

}

然后是关键部分的代码,就是将这些控件如何添加到GridView中,通过在创建子控件的方式,如下:

在创建子控件的方法中添加分页控件

protected override int CreateChildControls(System.Collections.IEnumerable dataSource, bool dataBinding)

{

int res = base.CreateChildControls(dataSource, dataBinding);

if (ShowToolBar)

{

try

{

GridViewRow row = new GridViewRow(0, 0, DataControlRowType.Pager, DataControlRowState.Normal);

TableCell c = new TableCell();

c.Width = Unit.Percentage(100);

c.ColumnSpan = this.Columns.Count;

row.Cells.Add(c);

TableCell cell1 = new TableCell();

Table table = new Table();

TableRow r = new TableRow();

table.Rows.Add(r);

table.Width = Unit.Percentage(100);

c.Controls.Add(table);

r.Cells.Add(cell1);

Literal l1 = new Literal();

l1.Text = "页次:";

cell1.Controls.Add(l1);

cell1.Wrap = false;

cell1.Controls.Add(lblCurrentPage);

l1 = new Literal();

l1.Text = "页/";

cell1.Controls.Add(l1);

cell1.Controls.Add(lblPageCount);

l1 = new Literal();

l1.Text = "页,共";

cell1.Controls.Add(l1);

cell1.Controls.Add(lblRowsCount);

l1 = new Literal();

l1.Text = "条记录";

cell1.HorizontalAlign = HorizontalAlign.Left;

cell1.Controls.Add(l1);

TableCell cell2 = new TableCell();

cell2.HorizontalAlign = HorizontalAlign.Right;

cell2.Wrap = false;

l1 = new Literal();

l1.Text = " [";

cell2.Controls.Add(l1);

cell2.Controls.Add(btnFirst);

l1 = new Literal();

l1.Text = "] ";

cell2.Controls.Add(l1);

l1 = new Literal();

l1.Text = " [";

cell2.Controls.Add(l1);

cell2.Controls.Add(btnPrev);

l1 = new Literal();

l1.Text = "] ";

cell2.Controls.Add(l1);

l1 = new Literal();

l1.Text = " [";

cell2.Controls.Add(l1);

cell2.Controls.Add(btnNext);

l1 = new Literal();

l1.Text = "] ";

cell2.Controls.Add(l1);

l1 = new Literal();

l1.Text = " [";

cell2.Controls.Add(l1);

cell2.Controls.Add(btnLast);

l1 = new Literal();

l1.Text = "] ";

cell2.Controls.Add(l1);

r.Cells.Add(cell2);

this.Controls[0].Controls.AddAt(0, row);

}

catch

{

}

}

return res;

}下面就是处理分页的事件,类似于RowCommand

public void NavigateToPage(object sender, CommandEventArgs e)

{

btnFirst.Enabled = true;

btnPrev.Enabled = true;

btnNext.Enabled = true;

btnLast.Enabled = true;

switch (e.CommandArgument.ToString())

{

case "Prev":

if (this.PageIndex > 0)

{

this.PageIndex -= 1;

}

break;

case "Next":

if (this.PageIndex < (this.PageCount - 1))

{

this.PageIndex += 1;

}

break;

case "First":

this.PageIndex = 0;

break;

case "Last":

this.PageIndex = this.PageCount - 1;

break;

}

if (this.PageIndex == 0)

{

btnFirst.Enabled = false;

btnPrev.Enabled = false;

if (this.PageCount == 1)

{

btnLast.Enabled = false;

btnNext.Enabled = false;

}

}

else if (this.PageIndex == this.PageCount - 1)

{

btnLast.Enabled = false;

btnNext.Enabled = false;

}

OnBind();

}这样就轻而易举的实现了一个个性的分页,欢迎各位大虾拍砖。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有