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>
Quelle est la meilleure solution à votre avis? et pourquoi?
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; } } }
Merci d'avance de vous interesser aux petits problemes de ma vie ...
Partager