如何在 GridView Pager 或 DataPager 中创建“全部显示"按钮 [英] How to create a 'Show All' button in GridView Pager or DataPager

查看:18
本文介绍了如何在 GridView Pager 或 DataPager 中创建“全部显示"按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当在 GridView 中启用 AllowPaging 时,您可以设置 4 种不同类型的 显示模式PagerSettings.

When AllowPaging is enabled in a GridView, you can set 4 different types of display modes in the PagerSettings.

<PagerSettings Mode="NextPreviousFirstLast" FirstPageText="First" LastPageText="Last" PageButtonCount="5" Position="Bottom" />

这些类型是

NextPrevious         : Previous-page and next-page buttons.
NextPreviousFirstLast: Previous-page, next-page, first-page, and last-page buttons.
Numeric              : Numbered link buttons to access pages directly.
NumericFirstLast     : Numbered and first-link and last-link buttons.

看起来像这样

< >
Fist < > Last
1 2 3 4
1 2 3 4 Last

但我想要的是所有页码,然后是查看全部"或全部显示"按钮来显示所有网格行.

But what I want is all the page numbers and then a "View All" or "Show All" button to display all the Grid rows.

1 2 3 4 - Show All

这可能吗?

推荐答案

是的.诀窍是 GridView Pager Control 是 GridView 内的嵌套表.您可以使用 OnRowCreated 事件来查找该表并添加您自己的全部显示"链接.

Yes it is. The trick is that the GridView Pager Control is a nested table inside the GridView. You can use the OnRowCreated event to find that table and add you own "Show All" link.

该链接将触发将 AllowPaging 属性设置为 false 的命令,从而显示所有行.这将适用于页面上的每个 GridView,只需将 OnRowCreated 事件添加到 GridView.

That link will trigger a command that sets the AllowPaging property to false thus showing all the rows. This will work for every GridView on the page, just add the OnRowCreated event to the GridView.

<asp:GridView ID="GridView1" runat="server" OnRowCreated="pagerViewAll_RowCreated">

然后在后面的代码中

protected void pagerViewAll_RowCreated(object sender, GridViewRowEventArgs e)
{
    //check if the row is the pager row
    if (e.Row.RowType == DataControlRowType.Pager)
    {
        //cast the sender back to a gridview
        GridView gridView = sender as GridView;

        //get the id of the gridview as a string
        string senderID = gridView.ID;

        //create a new linkbutton
        LinkButton linkButton = new LinkButton();
        linkButton.ID = senderID + "_ShowAll";
        linkButton.Text = "Show All";
        linkButton.CommandName = senderID;

        //add the viewAll_Command to the linkbutton
        linkButton.Command += new CommandEventHandler(viewAll_Command);

        //get the first table cell from the pager row (there is only one, spanned across all colums)
        TableCell pagerCell = e.Row.Cells[0];

        //cast the first control found in the pager cell as a table
        Table table = pagerCell.Controls[0] as Table;

        //then the first row of the table containing the pager buttons
        TableRow row = table.Rows[0];

        //add an empty cell for spacing
        TableCell tableCellSpacer = new TableCell();
        tableCellSpacer.Text = "&nbsp;-&nbsp;";
        row.Cells.Add(tableCellSpacer);

        //then add the cell containing the view all button
        TableCell tableCell = new TableCell();
        tableCell.Controls.Add(linkButton);
        row.Cells.Add(tableCell);
    }
}

隐藏代码中的查看所有方法

The View All Method in code behind

protected void viewAll_Command(object sender, CommandEventArgs e)
{
    //check which gridview for setting all the rows visible
    if (e.CommandName == "GridView1")
    {
        //disable pagination and rebuild the grid
        GridView1.AllowPaging = false;
        buildGridView1();
    }
    else if (e.CommandName == "GridView2")
    {
        GridView2.AllowPaging = false;
        buildGridView2();
    }
    else if (e.CommandName == "ListView1")
    {
        DataPager dataPager = ListView1.FindControl("DataPager1") as DataPager;
        dataPager.PageSize = 99999;
        buildListView1();
    }
}

这也适用于 ListView 中使用的 DataPager 控件,例如.

This also works for a DataPager Control used in ListView for example.

private void extendDataPagerInListView()
{
    //find the datapager inside the listview
    DataPager dataPager = ListView1.FindControl("DataPager1") as DataPager;

    //get the id of the listview as a string
    string senderID = ListView1.ID;

    //add some spacing
    Literal literal = new Literal();
    literal.Text = "&nbsp;-&nbsp;";

    //add the literal to the datapager
    dataPager.Controls.Add(literal);

    //create a new linkbutton
    LinkButton linkButton = new LinkButton();
    linkButton.ID = senderID + "_ShowAll";
    linkButton.Text = "Show All";
    linkButton.CommandName = senderID;

    //add the viewAll_Command to the linkbutton
    linkButton.Command += new CommandEventHandler(viewAll_Command);

    //add the linkbutton to the datapager
    dataPager.Controls.Add(linkButton);
}

这篇关于如何在 GridView Pager 或 DataPager 中创建“全部显示"按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆