在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
这可能吗?
答案 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 = " - ";
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 = " - ";
//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);
}