2009-01-07 4 views

Répondre

1

Voici un contrôle de pager que j'ai créé pour tomber dans le PagerTemplate d'un GridView. Ce n'est pas la chose la plus compliquée, mais elle montre comment un contrôle de pager peut «voir» la grille à laquelle il appartient et rendre une liste déroulante pour passer à une page spécifique.

DataPager.ascx

<%@ Control Language="C#" AutoEventWireup="true" EnableViewState="true" CodeFile="DataPager.ascx.cs" Inherits="Resources_Controls_DataPager" %> 
<div> 
    <div style="float:right;"> 
     <asp:ImageButton id="PageFirst" 
      CommandName="Page" 
      CommandArgument="First" 
      runat="server" /> 
     <asp:ImageButton id="PagePrev" 
      CommandName="Page" 
      CommandArgument="Prev" 
      runat="server" /> 
     &nbsp;&nbsp;Page 
     <asp:DropDownList id="pagesDropDown" 
      autopostback="true" 
      OnSelectedIndexChanged="pagesDropDown_SelectedIndexChanged" 
      runat="server" /> 
     <asp:Label id="pageTotalPages" runat="server" />&nbsp;&nbsp; 
     <asp:ImageButton ID="PageNext" 
      CommandName="Page" 
      CommandArgument="Next" 
      runat="server" /> 
     <asp:ImageButton ID="PageLast" 
      CommandName="Page" 
      CommandArgument="Last" 
      runat="server" /> 
    </div> 
    <div style="clear:both;"></div> 
</div> 

DataPager.ascx.cs

public partial class Resources_Controls_DataPager : System.Web.UI.UserControl 
{ 
    #region Property: ParentGrid 
    public GridView ParentGrid 
    { 
     get { return (GridView)Parent.Parent.Parent.Parent; } 
    } 
    #endregion 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     FillPage(); 
    } 

    public void FillPage() 
    { 
     if (ParentGrid != null && pagesDropDown.Items.Count == 0) 
     { 
      pagesDropDown.Items.Clear(); 
      for (int ix = 0; ix < ParentGrid.PageCount; ix++) 
      { 
       ListItem item = new ListItem((ix + 1).ToString()); 
       item.Selected = (ix == ParentGrid.PageIndex); 
       pagesDropDown.Items.Add(item); 
      } 

      if (pagesDropDown.Items.Count == 0) 
       pagesDropDown.Items.Add(new ListItem("0")); 

      pageTotalPages.Text = String.Format("of {0}", ParentGrid.PageCount); 
     } 
    } 

    protected void pagesDropDown_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     ParentGrid.PageIndex = pagesDropDown.SelectedIndex; 
    } 
} 
+0

Merci beaucoup. Je vais le tester. hoho ... –

Questions connexes