如何在 GridView Pager 或 DataPager 中创建“全部显示"按钮 [英] How to create a 'Show All' button in GridView Pager or DataPager
问题描述
当在 GridView 中启用 AllowPaging
时,您可以设置 4 种不同类型的 显示模式在PagerSettings
.
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 Control 是 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屋!