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

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

问题描述

在GridView中启用AllowPaging时,可以设置4种不同类型的

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控件是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天全站免登陆