将Repeater控件放在PagerTemplate中,如下所示:
<PagerTemplate>
<asp:Repeater ID="repFooter" OnItemCommand="repFooter_ItemCommand" runat="server">
<HeaderTemplate>
<div class="pager">
</HeaderTemplate>
<ItemTemplate>
<div class="page">
<asp:LinkButton ID="lnkPage" Text='<%# Container.DataItem %>' CommandName="ChangePage" CommandArgument="<%# Container.DataItem %>" runat="server" />
</div>
</ItemTemplate>
<FooterTemplate>
<div class="clear"></div>
</div>
</FooterTemplate>
</asp:Repeater>
</PagerTemplate>
Run Code Online (Sandbox Code Playgroud)
然后为Grid的DataBound事件添加一个事件处理程序,它为转发器设置数据源,如下所示:
protected void GridView1_DataBound(object sender, EventArgs e)
{
GridViewRow pagerRow = GridView1.BottomPagerRow;
if (pagerRow != null)
{
Repeater repFooter = (Repeater)pagerRow.Cells[0].FindControl("repFooter");
List<int> pages = new List<int>();
for (int i = 0; i < GridView1.PageCount; i++)
{
pages.Add(i + 1);
}
repFooter.DataSource = pages;
repFooter.DataBind();
}
}
Run Code Online (Sandbox Code Playgroud)
添加事件处理程序以处理转发器的ItemCommand事件,如下所示:
protected void repFooter_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "ChangePage")
{
GridView1.PageIndex = Convert.ToInt32(e.CommandArgument) - 1;
}
}
Run Code Online (Sandbox Code Playgroud)
以下是MSDN上的另一个示例,它使用下拉列表替换默认的分页器:http: //msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.pagertemplate.aspx
这是另一种使用gridview的内置分页命令的方法.这也将在网格的当前页面上呈现Label而不是LinkButton.
创建一个继承自ITemplate的类,如下所示:
public class PagerTemplate: ITemplate
{
private const string PAGE_COMMAND_NAME = "Page";
public GridView AssociatedGridView { get; private set; }
public PagerTemplate(GridView associatedGridView)
{
this.AssociatedGridView = associatedGridView;
}
public void InstantiateIn(Control container)
{
for (int i = 0; i < this.AssociatedGridView.PageCount; i++)
{
Panel pnlBox = new Panel();
if (this.AssociatedGridView.PageIndex != i)
{
LinkButton lnkPage = new LinkButton();
lnkPage.Text = (i + 1).ToString();
lnkPage.CommandName = PAGE_COMMAND_NAME;
lnkPage.CommandArgument = (i + 1).ToString();
pnlBox.Controls.Add(lnkPage);
}
else
{
Label lblPage = new Label();
lblPage.Text = (i + 1).ToString();
pnlBox.Controls.Add(lblPage);
}
container.Controls.Add(pnlBox);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在页面Init事件中执行以下操作:
protected void Page_Init(object sender, EventArgs e)
{
GridView1.PagerTemplate = new PagerTemplate(GridView1);
}
Run Code Online (Sandbox Code Playgroud)
使用这种方法,您还可以通过设置加上一页,下一页,第一页和最后一页按钮,他们的CommandName为"上一页","下一页","第一","最后".
| 归档时间: |
|
| 查看次数: |
12499 次 |
| 最近记录: |