如何在GridView寻呼机或DataPager

时间:2016-11-16 15:37:11

标签: c# asp.net .net gridview pagination

在GridView中启用AllowPaging后,您可以在PagerSettings中设置4种不同类型的display modes

<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

这可能吗?

1 个答案:

答案 0 :(得分:2)

是的。诀窍是GridView寻呼机控件是GridView内部的嵌套表。您可以使用OnRowCreated事件查找该表并添加自己的“全部显示”链接。

该链接将触发一个命令,将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);
    }
}

后面的代码中的查看全部方法

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

这也适用于DataPager中使用的ListView控件。

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