IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Afficher/masquer ou creer dynamiquement des UserControles


Sujet :

ASP.NET

  1. #1
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut Afficher/masquer ou creer dynamiquement des UserControles
    Bonjour,


    J'ai un repeater dont le role est d'aficher des messages. Ces messages peuvent etre de differents type : Administrateur, normal, etc...
    Ce qui change essentiellement c'est la mise en page. J'ai donc creer un usercontrol par type de message.

    Or je me pose une question, Vaut il mieux que je charge tous les types et qu'ensuite je n'affiche que celui qui m'interesse (option 1) ou alors que je charge dynamiquement mon user control pour ne prendre en compte que le bon.

    Un peu de code pour expliquer tout ca :

    option 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <asp:Repeater runat=server ID=C_Rep_MessageList DataSource="<%# DataSource %>">
        <ItemTemplate>
           <MBox1:AdminMessage ID="C_WC_AdminMessage" runat="server"  Visible="<%# ((Message)Container.DataItem).MessageType == Message.E_MessageType.AdminMessage %>" />
            <mbox2:basicmessage id="C_WC_BasicMessage" runat="server" Visible="<%# ((Message)Container.DataItem).MessageType == Message.E_MessageType.normal %>"/>
            <MBox3:FriendInvitation ID="C_WC_FriendInvitation" runat="server" Visible="<%# ((Message)Container.DataItem).MessageType == Message.E_MessageType.FriendInvitation %>" />
            <MBox4:GreetingCard ID="C_WC_GreetingCard" runat="server"  Visible="<%# ((Message)Container.DataItem).MessageType == Message.E_MessageType.greetingCard %>"/>    </ItemTemplate>
    </asp:Repeater>

    ou option 2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <asp:Repeater runat=server ID=C_Rep_MessageList DataSource="<%# DataSource %>" OnItemDataBound=C_Rep_MessageList_ItemDataBound>
        <ItemTemplate>
            <asp:PlaceHolder runat=server ID=C_PH_Message>
            </asp:PlaceHolder>
        </ItemTemplate>
    </asp:Repeater>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    protected void C_Rep_MessageList_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            Message m = null;
            PlaceHolder ph = null;
     
            m = (Message)e.Item.DataItem;
            ph = (PlaceHolder)e.Item.FindControl("C_PH_Message");
     
            if (m != null)
            {
                switch (m.MessageType)
                {
                    case Message.E_MessageType.normal:
                        WebMessage uc = (WebMessage)LoadControl("MessageBox/BasicMessage.ascx");
                        uc.DataSource = m;
                        ph.Controls.Add(uc);
                        break;
                    case Message.E_MessageType.greetingCard:
                        break;
                    case Message.E_MessageType.FriendInvitation:
                        break;
                    case Message.E_MessageType.AdminMessage:
                        break;
                    default:
                        break;
                }
            }
        }
    Quelle est la meilleure solution à votre avis? et pourquoi?

    Merci d'avance de vous interesser aux petits problemes de ma vie ...

  2. #2
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    Personne n'a d'idées sur la question?
    Il s'agit juste de m'éclairer le point de de la faq suivant http://dotnet.developpez.com/faq/asp...ls#dynUCAccess

    Il y est dit :

    Remarque : En général, il vaut mieux éviter de charger un contrôle utilisateur dynamiquement ; il vaudra mieux le placer dans la page aspx (ou un usercontrol ascx) quitte à le masquer dans le OnInit si on en a pas besoin suivant certaines conditions.
    J'aimerais savoir si mon cas présent tient du cas général ou non? et grosso modo quel avantage as t'on à preferer la creation dynamique de controles ou l'inverse?

    Merci d'avance , si l'un de vous peut me faire partager son experience

  3. #3
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    l'avantage a mon avis d'utiliser un loadcontrol est de maintriser l'ordre d'affichage et d'execution de ton usercontrol dans ta page.

    Tu pourras donc lui renseigner des proprietes par exemple.
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  4. #4
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    Merci pour ton post Toppolino.

    J ai effectivement choisi l'option dynamique pour l'unique raison que dans mon cas , je cree dynamiquement une liste d'elements et que chaque elements peut etre de 6 ou 7 types.

    Or je trouve que le nombre de controles (7* x lignes) que cela genererait serait trop important. Je prefere "soulager" le serveur en ne lui faisant créer que ce dont il a besoin.

    Le coté négatif est que je suis alors obligé de databinder mon repeater dans l'evenement init de ma page. Et lorsque le filtre applique à cette liste change, je suis obligé de relancer mon databinding, d'ou double creation des controles dans ce cas lá. Mais bon, c'est une probleme moindre À mon avis.


    Merci en tout cas et à bientôt,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/03/2009, 15h29
  2. Creer dynamiquement des combobox
    Par shirya dans le forum VB.NET
    Réponses: 1
    Dernier message: 30/08/2008, 02h17
  3. [Débutant] Creer dynamiquement des objets
    Par Uragiru dans le forum Interfaces Graphiques
    Réponses: 8
    Dernier message: 29/04/2008, 19h46
  4. [RCP]Creer dynamiquement des perspectives
    Par remax_ren dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 26/05/2006, 16h09
  5. [VBA-E] Est il possible de creer dynamiquement des controles en VBA
    Par bbkenny dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 13/08/2004, 20h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo