2009-02-19 8 views
2

J'ai un gridview qui pourrait finir par afficher environ 5K enregistrements. Je l'ai actuellement configuré pour utiliser la pagination afin qu'il affiche 200 enregistrements à la fois. Pour ajouter de la convivialité, j'aimerais fournir à l'utilisateur final des commentaires qui lui permettront de localiser un enregistrement plus facilement. J'espérais qu'il y avait un moyen pour l'utilisateur de placer la souris sur l'un des liens pager et une info-bulle afficherait la gamme d'enregistrements disponibles sur la page.Ajouter une info-bulle au lien de pagination dans asp.net GridView

Par exemple:

L'utilisateur met la souris sur la page # 1 lien et l'info-bulle lit ABOTT - BUELLER L'utilisateur met la souris sur la page # 14 lien et l'info-bulle lit MARTIN - PELLIGRINO

Comment est-ce que j'accomplirais ceci dans ASP.NET?

Répondre

2

Vous pouvez effectuer les opérations suivantes. Tout d'abord créer un PagerTemplate vide:

<asp:GridView 
ID="GridView1" 
runat="server" 
AllowPaging="true" 
PagerSettings-Mode="Numeric" 
PageSize="2" ondatabound="GridView1_DataBound"> 
    <PagerTemplate /> 
</asp:GridView> 

Maintenant, en réponse à l'événement DataBound vous pouvez ajouter des contrôles à la ligne de téléavertisseur. Ce code ajoute simplement les numéros de page en tant que LinkButtons.

protected void GridView1_DataBound(object sender, EventArgs e) 
{ 
    GridViewRow pagerRow = GridView1.BottomPagerRow; 

    for (int i = 0; i < GridView1.PageCount; i++) 
    { 
     LinkButton lb = new LinkButton(); 
     lb.Text = i.ToString(); 
     lb.ToolTip = "..."; 
     lb.CommandName = "Page"; 
     lb.CommandArgument = i.ToString(); 

     pagerRow.Cells[0].Controls.Add(lb); 
    } 

} 

Vous devrez également gérer l'événement PageIndexChanging.

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    GridView1.PageIndex = e.NewPageIndex + 1; 
    GridView1.DataBind(); 
} 

Maintenant tout ce qui reste est de déterminer ce que le texte de l'info-bulle devrait être. Pour cela, vous aurez besoin des indices des lignes du haut et du bas pour chaque page. Dans cet exemple, ils seraient:

int topIndex = i * GridView1.PageSize; 
int bottomIndex = ((i + 1) * GridView1.PageSize) - 1; 
Questions connexes