2010-11-19 8 views
2

J'ai besoin de mettre en page mes commandes utilisateur - les groupes de 8 ou 10 devraient être beaux. À l'heure actuelle, ils sont dans un espace réservé:Comment puis-je ajouter la pagination aux contrôles utilisateur?

<asp:PlaceHolder ID="ProfileContainer" runat="server"></asp:PlaceHolder> 

Et l'espace réservé est peuplé comme celui-ci:

var model = //LINQ to Entities query 

foreach(var profile in model) { 
    Controls_Profile profile = (Controls_Profile)Page.LoadControl("~/Controls/Profile.ascx"); 

    profile.Name = model.Name; 
    //more properties 
    ProfileContainer.Controls.Add(profile); 
} 

Comment puis-je la page des résultats en cas j'ai des centaines de profils? La plupart des messages que je trouve sont liés à la création d'un contrôle de pagination personnalisé qui ne fait que piocher une table.

J'ai pensé à créer un compteur qui préfixerait le premier contrôle avec <div id="Group1">. Après 8 ou 10 contrôles, ajouter </div>. Je pourrais utiliser jQuery pour insérer des liens précédents/précédents et contrôler leur flux en fonction du numéro de groupe. Mais, comment puis-je faire Response.Write("<div id="groupx">"); au milieu de la boucle que les contrôles sont ajoutés? Comment cela fonctionnerait-il?

+0

Vous pouvez créer une fonction qui renvoie un DataTable rempli avec vos contrôles personnalisés et définir cela comme source de données d'un GridView. Cela vous permettra d'utiliser les fonctions de pagination de GridView. – clifgriffin

Répondre

0

En ce qui concerne mon commentaire:

public DataTable getControls() 
{ 
    DataTable dt = new DataTable(); 
    //Code to populate table 
    return dt; 
} 

Et:

<asp:GridView ID="YourGridView" AllowPaging="true" DataSource='<%# getControls() %>'></asp:GridView> 

Je crains que votre source de données doit avoir une interface dénombrable d'une sorte pour que la pagination fonctionne bien.

Si cela échoue, je vous suggère de lire les techniques de radiomessagerie courantes et de mettre en place un manuel. Pas aussi dur que tu penses.

+0

Mon modèle n'est pas énumérable, donc cela ne fonctionnera probablement pas. –

+0

Comment puis-je rendre cette collection enumerable? –

Questions connexes