GridView利用PagerTemplate做分页显示设置上一页下一页转到下拉转页

效果如图:

代码如下:

aspx页:

<asp:GridView ID="GridViewMain" runat="server"

OnPageIndexChanging="GridViewMain_PageIndexChanging"

ondatabound="GridViewMain_DataBound"

PageSize="10">

<PagerTemplate>
         <asp:Label ID="lblPage" runat="server" Text='<%# "第" + (((GridView)Container.NamingContainer).PageIndex + 1)  + "页/共" + (((GridView)Container.NamingContainer).PageCount) + "页" %> '></asp:Label> 
         <asp:LinkButton ID="lbnFirst" runat="Server" Text="首页"  Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>' CommandName="Page" CommandArgument="First" ></asp:LinkButton> 
        <asp:LinkButton ID="lbnPrev" runat="server" Text="上一页" Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>' CommandName="Page" CommandArgument="Prev"  ></asp:LinkButton> 
        <asp:LinkButton ID="lbnNext" runat="Server" Text="下一页" Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != (((GridView)Container.NamingContainer).PageCount - 1) %>' CommandName="Page" CommandArgument="Next" ></asp:LinkButton> 
         <asp:LinkButton ID="lbnLast" runat="Server" Text="尾页"   Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != (((GridView)Container.NamingContainer).PageCount - 1) %>' CommandName="Page" CommandArgument="Last" ></asp:LinkButton> 
         到第<asp:dropdownlist id="PageDropDownList"
                  autopostback="true"
                  onselectedindexchanged="PageDropDownList_SelectedIndexChanged"
                  runat="server"/> 页 
         
     </PagerTemplate>

cs页

 protected void GridViewMain_PageIndexChanging(object sender,GridViewPageEventArgs e)    

{        

GridViewMain.PageIndex = e.NewPageIndex;        

InitListFillData();   //数据绑定

  }    

protected void PageDropDownList_SelectedIndexChanged(Object sender, EventArgs e)    

{       

  // Retrieve the pager row.        

GridViewRow pagerRow = GridViewMain.BottomPagerRow;       

  // Retrieve the PageDropDownList DropDownList from the bottom pager row.        

DropDownList pageList = (DropDownList)pagerRow.Cells[0].FindControl("PageDropDownList");       

  // Set the PageIndex property to display that page selected by the user.       

  GridViewMain.PageIndex = pageList.SelectedIndex;        

InitListFillData();   //数据绑定 

}    

protected void GridViewMain_DataBound(Object sender, EventArgs e)    

{      

GridViewMain.BottomPagerRow.Visible = true;//只有一页数据的时候也再下面显示pagerrow,需要top的再加Top

   // Retrieve the pager row.        

GridViewRow pagerRow = GridViewMain.BottomPagerRow;        

// Retrieve the DropDownList and Label controls from the row.        

DropDownList pageList = (DropDownList)pagerRow.Cells[0].FindControl("PageDropDownList");        

Label pageLabel = (Label)pagerRow.Cells[0].FindControl("CurrentPageLabel");       

  if (pageList != null)        

{            

// Create the values for the DropDownList control based on           

  // the  total number of pages required to display the data            

// source.            

for (int i = 0; i < GridViewMain.PageCount; i++)           

  {                

// Create a ListItem object to represent a page.                

int pageNumber = i + 1;              

   ListItem item = new ListItem(pageNumber.ToString());                

// If the ListItem object matches the currently selected                

// page, flag the ListItem object as being selected. Because               

  // the DropDownList control is recreated each time the pager               

  // row gets created, this will persist the selected item in                

// the DropDownList control.                  

if (i == GridViewMain.PageIndex)                

{                   

  item.Selected = true;                

}                

// Add the ListItem object to the Items collection of the               

  // DropDownList.                

pageList.Items.Add(item);         

    }       

  }       

  if (pageLabel != null)      

   {            

// Calculate the current page number.            

int currentPage = GridViewMain.PageIndex + 1;

            // Update the Label control with the current page information.           

  pageLabel.Text = "Page " + currentPage.ToString() +            

   " of " + GridViewMain.PageCount.ToString();        

}    

}

posted @ 2016-06-03 14:20  lilyshy  阅读(3133)  评论(0编辑  收藏  举报