2010-08-09 14 views
4

ci-dessous le code fonctionne bien si je supprimer le PagerSetting ou supprimer PagerTemplate donc si j'ai deux (PagerSetting & PagerTemplate) alors mon numéro de page est affiche pas.pagination personnalisée sur le contrôle GridView

ma question est: comment puis-je afficher à la fois (PagerTemplate et PagerSetting) togather au bas de la Gridview? Voir le code source ci-dessous.

<asp:GridView ID="gvTable" runat="server" ShowHeader="true"  
    PageSize="5" AllowPaging="true" AllowSorting="true"  
    DataSourceID="myLinqDataSource" AutoGenerateColumns="false"  
    OnRowDataBound="GridView_DataBound">  
    <Columns>  
    <asp:BoundField DataField="Edited" HeaderText="Date" DataFormatString="{0:d}" />  
    <asp:BoundField DataField="Activity" HeaderText="Notes" />  
    </Columns>  
<PagerStyle CssClass="pager-row" />  
        <RowStyle CssClass="row" />  
        <PagerSettings Mode="NumericFirstLast" PageButtonCount="7" FirstPageText="«" LastPageText="»" />  
        **<PagerTemplate>**  
         <div style="float: left; margin-left: 12px;">  
          <div style="float: left; margin: 4px 6px 0px 0px;">Page Size</div>  
          <asp:DropDownList ID="ddlPageSizeChange" runat="server" AutoPostBack="true" OnSelectedIndexChanged="PageSizeChange">  
           <asp:ListItem>15</asp:ListItem>  
           <asp:ListItem>25</asp:ListItem>  
           <asp:ListItem>50</asp:ListItem>  
           <asp:ListItem>100</asp:ListItem>  
          </asp:DropDownList>  
         </div>  
         <div class="gridCount" runat="server" id="divGridCount"><b>1</b> Items Found </div>  
        </PagerTemplate>  
</asp:GridView> 

MISE À JOUR 1:

-je capable d'afficher la pagination 1 2 3 4 5 ... mais le problème est la suivante: je ne peux pas avoir les deux PagerSetting & PagerTemplate et si j'ai deux (PagerSetting & PagerTemplate) dans mon gridview ma pagination (1 2 3 4 5) ne s'affiche pas et si j'enlève PagerTemplate que mon paging affiche (1 2 3 4 5 ...) est logique?

MISE À JOUR:

Voici ce que je suis en train de faire:

< < < 1 2 3 4 5 .....> >>Pages Trouvés 80 - page 1/80 - PageSize {} 15,25,50,10 (ce sera un dropdownlist)

Répondre

1

vous pouvez le faire en utilisant le code de suivi

  1. Retour code de fin (ligne d'événement créé de gridview):

    protected void GridView_RowCreated(object sender, GridViewRowEventArgs e) 
    { 
    if (e.Row.RowType == DataControlRowType.Pager) 
    { 
        TableRow tr = (TableRow)e.Row.Cells[0].Controls[0].Controls[0]; 
        if (tr.Cells[1] != null && (((tr.Cells[1]).Controls[0]) is LinkButton)) 
        { 
         LinkButton btnPrev = (LinkButton)(tr.Cells[1]).Controls[0]; 
         if (btnPrev.Text == "...") 
         { 
          (((tr.Cells[1]).Controls[0]) as LinkButton).Text = "<"; 
         } 
        } 
        if (tr.Cells[tr.Cells.Count - 2] != null && (((tr.Cells[tr.Cells.Count - 2]).Controls[0]) is LinkButton)) 
        { 
         LinkButton btnNext = (LinkButton)(tr.Cells[tr.Cells.Count - 2]).Controls[0]; 
         if (btnNext.Text == "...") 
         { 
          (((tr.Cells[tr.Cells.Count - 2]).Controls[0]) as LinkButton).Text = ">"; 
         } 
        } 
    } 
    

    }

  2. et utiliser pagersetting comme:

    <PagerSettings Mode="NumericFirstLast" FirstPageText="<<" 
    LastPageText=">>" /> 
    

vous obtiendrez votre sortie. :)

Note: ne pas oublié de mettre pageSize et AllowPaging = "true" de la grille.