如何在GridView Pager或DataPager中创建“显示全部"按钮 [英] How to create a 'Show All' button in GridView Pager or 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 = " - ";
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 = " - ";
//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屋!