实现思路和上文的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)
{
th***EnableViewState = true;
lblCurrentPage = new Label();
lb***rrentPage.ForeColor = Co***Translator.FromHtml("#e78a29");
lb***rrentPage.Text = "1";
lblPageCount = new Label();
lb***geCount.Text = "1";
lblRowsCount = new Label();
lb***wsCount.ForeColor = Co***Translator.FromHtml("#e78a29");
btnFirst = new LinkButton();
bt***rst.Text = "首页";
bt***rst.Command += new CommandEventHandler(NavigateToPage);
bt***rst.CommandName = "Pager";
bt***rst.CommandArgument = "First";
btnPrev = new LinkButton();
bt***ev.Text = "上一页";
bt***ev.Command += new CommandEventHandler(NavigateToPage);
bt***ev.CommandName = "Pager";
bt***ev.CommandArgument = "Prev";
btnNext = new LinkButton();
bt***xt.Text = "下一页";
bt***xt.Command += new CommandEventHandler(NavigateToPage);
bt***xt.CommandName = "Pager";
bt***xt.CommandArgument = "Next";
btnLast = new LinkButton();
bt***st.Text = "尾页";
bt***st.Command += new CommandEventHandler(NavigateToPage);
bt***st.CommandName = "Pager";
bt***st.CommandArgument = "Last";
ba***OnInit(e);
}
然后是关键部分的代码,就是将这些控件如何添加到GridView中,通过在创建子控件的方式,如下:
在创建子控件的方法中添加分页控件
protected override int CreateChildControls(Sy***m.Collections.IEnumerable dataSource, bool dataBinding)
{
int res = ba***CreateChildControls(dataSource, dataBinding);
if (ShowToolBar)
{
try
{
GridViewRow row = new GridViewRow(0, 0, Da***ontrolRowType.Pager, Da***ontrolRowState.Normal);
TableCell c = new TableCell();
c.Width = Un***Percentage(100);
c.***umnSpan = th***Columns.Count;
ro***ells.Add(c);
TableCell cell1 = new TableCell();
Table table = new Table();
TableRow r = new TableRow();
ta***.Rows.Add(r);
ta***.Width = Un***Percentage(100);
c.***trols.Add(table);
r.***ls.Add(cell1);
Literal l1 = new Literal();
l1.Text = "页次:";
ce***.Controls.Add(l1);
ce***.Wrap = false;
ce***.Controls.Add(lblCurrentPage);
l1 = new Literal();
l1.Text = "页/";
ce***.Controls.Add(l1);
ce***.Controls.Add(lblPageCount);
l1 = new Literal();
l1.Text = "页,共";
ce***.Controls.Add(l1);
ce***.Controls.Add(lblRowsCount);
l1 = new Literal();
l1.Text = "条记录";
ce***.HorizontalAlign = Ho***ontalAlign.Left;
ce***.Controls.Add(l1);
TableCell cell2 = new TableCell();
ce***.HorizontalAlign = Ho***ontalAlign.Right;
ce***.Wrap = false;
l1 = new Literal();
l1.Text = " [";
ce***.Controls.Add(l1);
ce***.Controls.Add(btnFirst);
l1 = new Literal();
l1.Text = "] ";
ce***.Controls.Add(l1);
l1 = new Literal();
l1.Text = " [";
ce***.Controls.Add(l1);
ce***.Controls.Add(btnPrev);
l1 = new Literal();
l1.Text = "] ";
ce***.Controls.Add(l1);
l1 = new Literal();
l1.Text = " [";
ce***.Controls.Add(l1);
ce***.Controls.Add(btnNext);
l1 = new Literal();
l1.Text = "] ";
ce***.Controls.Add(l1);
l1 = new Literal();
l1.Text = " [";
ce***.Controls.Add(l1);
ce***.Controls.Add(btnLast);
l1 = new Literal();
l1.Text = "] ";
ce***.Controls.Add(l1);
r.***ls.Add(cell2);
th***Controls[0].C***rols.AddAt(0, row);
}
catch
{
}
}
return res;
}下面就是处理分页的事件,类似于RowCommand
public void NavigateToPage(object sender, CommandEventArgs e)
{
bt***rst.Enabled = true;
bt***ev.Enabled = true;
bt***xt.Enabled = true;
bt***st.Enabled = true;
switch (e.***mandArgument.ToString())
{
case "Prev":
if (th***PageIndex > 0)
{
th***PageIndex -= 1;
}
break;
case "Next":
if (th***PageIndex < (th***PageCount - 1))
{
th***PageIndex += 1;
}
break;
case "First":
th***PageIndex = 0;
break;
case "Last":
th***PageIndex = th***PageCount - 1;
break;
}
if (th***PageIndex == 0)
{
bt***rst.Enabled = false;
bt***ev.Enabled = false;
if (th***PageCount == 1)
{
bt***st.Enabled = false;
bt***xt.Enabled = false;
}
}
else if (th***PageIndex == th***PageCount - 1)
{
bt***st.Enabled = false;
bt***xt.Enabled = false;
}
OnBind();
}这样就轻而易举的实现了一个个性的分页,欢迎各位大虾拍砖。
上一篇: 如何防止插入删除表造成的数据库死锁