如何创建'Show All'按钮在gridviewpager或DataPager

本文关键字:按钮 gridviewpager DataPager All Show 创建 何创建 | 更新日期: 2023-09-27 18:18:08

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

<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

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

1 2 3 4 - Show All

这可能吗?

如何创建'Show All'按钮在gridviewpager或DataPager

是的。诀窍在于GridView页导航控件是GridView内部的一个嵌套表。您可以使用OnRowCreated事件来查找该表并添加您自己的"Show All"链接。

该链接将触发一个命令,该命令将AllowPaging属性设置为false,从而显示所有行。这将适用于页面上的每个GridView,只需将OnRowCreated事件添加到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);
    }
}

后面代码中的viewall方法
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控件。

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);
}