Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
855 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  ASP.NET : deux Repeater imbriqués ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ASP.NET : deux Repeater imbriqués ?

n°1235048
Arjuna
Aircraft Ident.: F-MBSD
Posté le 31-10-2005 à 15:08:00  profilanswer
 

Alors voilà.
 
Ze truc à la con.
 
Histoire de faire un truc propre et avec peu de code, j'utilise un Repeater pour afficher le résultat d'une recherche.
 
Seulement, je dois diviser mon résultat par familles.
 
Et là ça coince :D
 
J'ai pas trouvé de notion de regroupement dans l'objet Repeater.
Du coup, j'ai modifié ma recherche de façon à retrouver les familles qui ont des éléments correspondants à la rechercher, puis pour chaque famille, je charge tous les items (ça tombe bien, c'est de toute façon ce qu'on me demande de faire).
 
Seulement, j'ai mon premier Repeater pour afficher les familles.
Cool.
 
Et je fais comment pour mettre un second Repeater à l'interrieur du ItemTemplate ? Surtout pour le remplir... En fait, je sèche. C'est possible ? Ou si je dois me faire un contrôle à la main ?

mood
Publicité
Posté le 31-10-2005 à 15:08:00  profilanswer
 

n°1235073
WhyMe
HFR ? Nan, connais pas ...
Posté le 31-10-2005 à 15:31:19  profilanswer
 

J'avoue que je n'ai jamais essayé, mais je ne vois pas ce qui pourrait empêcher l'imbrication de Repeater  [:airforceone]
Je suis justement en train de modifier un Repeater, je vais essayer si j'ai 2mn :jap:

n°1235075
Arjuna
Aircraft Ident.: F-MBSD
Posté le 31-10-2005 à 15:36:37  profilanswer
 

Ben... Bon, je vais faire, un test, ce sera plus simple :D

n°1235584
_Mose_
Lonesome coder
Posté le 01-11-2005 à 12:41:22  profilanswer
 

Oui, c'est sûr, deux repeater imbriqués ça marche.
C'est même le moyen le plus simple pour faire une DataGrid custom, ou (précisémment) le résultat d'une page de recherche :)
Dsl, j'ai pas de sample sous la main...

n°1235590
Arjuna
Aircraft Ident.: F-MBSD
Posté le 01-11-2005 à 12:54:48  profilanswer
 

OK, bon, là pour le moment j'avais mis de côté la chose (grosse merde sur un autre truc qui n'a rien à voir, et ce développement n'étant pas prioritaire, je l'avais mis de côté).
 
Je devrais m'y remettre demain dans la journée. Si j'ai des PB, je ne manquerai pas de venir poser mes questions ;)
 
Mais le souci des Repeater imbriqués, c'est : comment je met le DataBind de celui qui est imbriqué ? Dans l'évent de pre-rendu du premier, je crée un Repeater dans l'Item et le lance ma requête ?

n°1235621
_Mose_
Lonesome coder
Posté le 01-11-2005 à 13:25:33  profilanswer
 

Je conseillerai d'utiliser 'ItemDataBound' plutôt que 'PreRender'
Un exemple simple :
 

Code :
  1. <asp:Repeater id="Repeater1" runat="server">
  2. <itemtemplate>
  3.  <asp:Label id="lbl1" runat="server"></asp:Label><br>
  4.  <asp:Repeater id="Repeater2" runat="server">
  5.   <itemtemplate>
  6.    <asp:Label id="lbl2" runat="server"></asp:Label><br>
  7.   </itemtemplate>
  8.  </asp:Repeater><br>
  9. </itemtemplate>
  10. </asp:Repeater>


Code :
  1. private void Page_Load(object sender, System.EventArgs e)
  2. {
  3. Data []data = ...
  4. this.Repeater1.ItemDataBound += new RepeaterItemEventHandler(Repeater1_ItemDataBound);
  5. this.Repeater1.DataSource = data;
  6. this.Repeater1.DataBind();
  7. }
  8. private void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
  9. {
  10. // get the data
  11. Data data = e.Item.DataItem as Data;
  12. if(data != null)
  13. {
  14.  // get the Label
  15.  Label lbl = (e.Item.FindControl("lbl1" ) as Label);
  16.  if(lbl != null)
  17.   lbl.Text = data.value;
  18.  // get the sub repeater
  19.  Repeater subrepeater = (e.Item.FindControl("Repeater2" ) as Repeater);
  20.  if(subrepeater != null)
  21.  {
  22.   subrepeater.ItemDataBound += new RepeaterItemEventHandler(Repeater2_ItemDataBound);
  23.   subrepeater.DataSource = data.subdatas;
  24.   subrepeater.DataBind();
  25.  }
  26. }
  27. }
  28. private void Repeater2_ItemDataBound(object sender, RepeaterItemEventArgs e)
  29. {
  30. // get the data
  31. SubData sub = e.Item.DataItem as SubData;
  32. if(str != null)
  33. {
  34.  // get theLabel
  35.  Label lbl = (e.Item.FindControl("lbl2" ) as Label);
  36.  if(lbl != null)
  37.   lbl.Text = SubData.value;
  38. }
  39. }

n°1235659
Arjuna
Aircraft Ident.: F-MBSD
Posté le 01-11-2005 à 14:03:40  profilanswer
 

oui, c'était ça donc je voulais parler, mais je ne me souvenais plus du nom ;)
 
merci, je regarde ça sans faute (là je peux pas, je suis en train de voler avec FS :D)

n°1236192
Arjuna
Aircraft Ident.: F-MBSD
Posté le 02-11-2005 à 11:03:27  profilanswer
 

Merci, je viens d'adapter ton exemple, et ça marche parfaitement !
 
Seul truc domage, c'est que c'est pas bien rapide (obligé de faire n requêtes là où avant j'en avais qu'une seule) mais bon :spamafote:

n°1238856
_Mose_
Lonesome coder
Posté le 04-11-2005 à 16:14:17  profilanswer
 

Bah tu peux aussi ne faire qu'une seule requête et coller tes données dans une structure plus complexe.
Ca rajoute une phase de traitement avant affichage, mais ce sera plus rapide que N requête.
Si tu as de la motivation, je te conseille de te pencher sur les DataSet fortement typés...

n°1238866
Arjuna
Aircraft Ident.: F-MBSD
Posté le 04-11-2005 à 16:25:58  profilanswer
 

ouais, mais à ce moment, autant faire l'affichage dans le traitement pré-affichage, donc je fais rester avec cette structure simple pour le moment ;)
 
le but du jeu, c'est d'économiser le code et le rendre facilement lisible et compréhensible : je débute le c# et je suis nul. et je suis celui qui s'y connait le plus dans ma boîte, donc je pense à mes camarades qui risquent de devoir maintenir derrière moi ;)

mood
Publicité
Posté le 04-11-2005 à 16:25:58  profilanswer
 

n°1238870
Arjuna
Aircraft Ident.: F-MBSD
Posté le 04-11-2005 à 16:27:08  profilanswer
 

mais sinon, je garde sous le coude le coup des dataset fortement typés, j'en ai vu passer dans la doc, et ça a l'air plutôt intéressant (ça ressemble un peu à ma notion de records fichiers dont je parle dans l'autre topic ;))


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  ASP.NET : deux Repeater imbriqués ?

 

Sujets relatifs
asp:Repeater : Comment mettre un "CommandArgument" ?[VB.NET/Mysql] Utilisation de MysqlConnector
ASP.NET et logevent, je pète les plombs...[ASP - Sql Server 2000] Défi pour trouver une requête complexe
Hébergement ASP.NetProcédures stockées sous Access [C++.Net]
plus de Java que de .NetComment utiliser Visual Basic .NET?
Plus de sujets relatifs à : ASP.NET : deux Repeater imbriqués ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR