如何在GridView寻呼机或DataPager中创建“全部显示”按钮

AllowPaging中启用AllowPaging ,您可以在AllowPaging中设置4种不同类型的显示模式 。

  

这些类型是

 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 

这可能吗?

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

该链接将触发一个命令,将AllowPaging属性设置为false从而显示所有行。 这将适用于页面上的每个GridView,只需将OnRowCreated事件添加到GridView即可。

  

然后在代码背后

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

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

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