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 :

[VB.NET] Repeater imbriqué


Sujet :

ASP.NET

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut [VB.NET] Repeater imbriqué
    Bonjour,

    Je souhaiterai imbriqué 2 repeaters. Après pas mal de recherche, j'ai trouvé ce lien :
    Celui ci est c#, mais je pense que la solution ne doit pas être loin.

    Au niveau du cahier des charges, la demande est simple. Des articles dans des commandes selon l'exemple suivant :

    Commande 1
    -> Article A
    -> Article B
    -> Article ...

    Commande 2
    -> Article A
    -> Article D
    -> Article E
    -> Article ...
    J'ai donc un repeater pour les commandes et il m'en faudrait un autre pour les articles des commandes.

    Mon problème est de lié les 2 repeaters. Le code parle de l'événement ItemDataBound que j'ai du mal à saisir en fait. Je ne comprend pas comment faire la relation. Avez vous une idée :
    ~ Sadneth ~

    Webmaster sur :
    http://www.lesacteursdelombre.com

    ~ Les cicatrices ont pour mérite de nous rappeler que le passé n'est pas un rêve ~

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Salut,

    L'évenement ItemDataBound d'un repeater est levé au moment ou une ligne de ton repeater est remplie avec des données. A ce moment là tu peux manipuler : la donnée qui est bindée ainsi que la ligne du repeater avec tous ses controles.

    Coté aspx tu vas donc avoir qque chose qui ressemble à ça (en pseudo code hein) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <repeater ID = CmdRepeater>
      <label ID = CmdName/>
      <repeater ID = ArticleRepeater/>
    </repeater>
    Coté aspx.cs tu peux faire qque chose comme ça :

    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
    29
     
    Page_Load()
    {
      CmdRepeater.ItemDataBound += new EventHandler(MonHandlerItemDataBound);
     
      if( !Page.IsPostBack )
      {
          //On imagine que tu as un tableau de commandes
          Commande[] MesCommandes = .......
     
          CmdRepeater.DataSource = MesCommandes;
          CmdRepeater.DataBind();
       }
    }
     
    MonHandlerItemDataBound(object source, EventArg e)
    {
        //tu récuperes ton objet commandes
        Commande MaCommandeCourante = (Command) e.Item.DataItem;
     
        //tu recuperes ton label
        (Label) CmdName = (Label)e.Item.FindControl("CmdName");
        CmdName.Text = MaCommandeCourante.Nom;
     
        //tu récupères ton repeater Article
        Repeater ArticleRpt = (Repeater) e.Item.FindControl("ArticleRepeater");
        ArticleRpt.DataSource = MaCommandeCourante.Articles;
        Articlerepeater.DataBind();
    }
    Voilà , l'idée est là, il te reste plus qu'a gérer ce que tu veux afficher dans ton repeater d'articles, éventuellement de la même maniere (en t'abonnant a son evenement ItemDataBound dans la fonction MonHandlerItemDataBound). J'espere que c'est a peu prés clair

    Edit : oups j'ai pas fait attention, tu fais du VB.net et je t'ai mis mon exemple en C#. J'espere que ça te genera pas trop, et ça ne change rien au principe.

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut cool
    Merci pour cette réponse

    Je pense que ca ne devrait pas poser de problème le C#

    Rdv ce soir pr essayer ce code... Merci encore ^^
    ~ Sadneth ~

    Webmaster sur :
    http://www.lesacteursdelombre.com

    ~ Les cicatrices ont pour mérite de nous rappeler que le passé n'est pas un rêve ~

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut c# en VB ?...
    Après réflexion, j'ai du mal à traduire tes lignes C#, enfin, du moins celle ci :$

    //tu récuperes ton objet commandes
    Commande MaCommandeCourante = (Command) e.Item.DataItem;

    //tu récupères ton repeater Article
    Repeater ArticleRpt = (Repeater) e.Item.FindControl("ArticleRepeater");
    ArticleRpt.DataSource = MaCommandeCourante.Articles;
    Articlerepeater.DataBind();
    Parce que je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        Private Sub rpCommande_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rpDisco.ItemDataBound
     
            Dim MaCommande As WebControls.RepeaterItem
     
            MaCommande = e.Item
     
            lblNumero = e.Item.FindControl("lblNumero")
            lblNumero.Text = MaCommande.DataItem("Numero")
        End Sub
    Et j'ai une erreur à la ligne :
    lblNumero.Text = MaCommande.DataItem("Numero")
    Erreur : La référence d'objet n'est pas définie à une instance d'un objet.

    Si je m'amuse bien sur à mettre ceci :
    lblNumero.Text = "toto"
    J'ai la même erreur bien sur
    ~ Sadneth ~

    Webmaster sur :
    http://www.lesacteursdelombre.com

    ~ Les cicatrices ont pour mérite de nous rappeler que le passé n'est pas un rêve ~

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut
    personne n'a d'idée ?
    ~ Sadneth ~

    Webmaster sur :
    http://www.lesacteursdelombre.com

    ~ Les cicatrices ont pour mérite de nous rappeler que le passé n'est pas un rêve ~

  6. #6
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    salut,

    J'ai eu la même erreur que toi et pour moi la soluce était toute conne. En fait si ton label n'est défini que dans itemtemplate, lors de ton itemdatabind, il faut que tu vérifies que l'item déclencheur est bien du type "item" et pas "alternativeitem", "headeritem" ou "footeritem", genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    Public Sub verifie_item(ByVal s As Object, ByVal e As RepeaterItemEventArgs)
     
            Dim test As Label = New Label
     
            Select Case e.Item.ItemType
                Case ListItemType.Item
                    test = CType(e.Item.FindControl("toto"), Label)
                    test.Text = "ca marche"
            End Select
     
     
    End Sub
    j'espère que ca t'aidera

  7. #7
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut pas pr moi
    bah mon souci était simplement que lorsque je tapais à la main le code mon répeater :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:repeater id="machin" ....
    Le server du runat n'était pas entre "" et donc le repeater était pas très bien reconnu...

    donc c résolu, ca marche super depuis ^^
    ~ Sadneth ~

    Webmaster sur :
    http://www.lesacteursdelombre.com

    ~ Les cicatrices ont pour mérite de nous rappeler que le passé n'est pas un rêve ~

  8. #8
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    Hello, tu pourrais me faire voir ton code ?

    j'ai le même problème que toi ...

  9. #9
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 79
    Points
    79
    Par défaut
    oui, quand je serai chez moi... j'aurai le source ^^
    ~ Sadneth ~

    Webmaster sur :
    http://www.lesacteursdelombre.com

    ~ Les cicatrices ont pour mérite de nous rappeler que le passé n'est pas un rêve ~

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

Discussions similaires

  1. [C# .net] Repeater dans un GridView
    Par Rodie dans le forum ASP.NET
    Réponses: 2
    Dernier message: 02/01/2007, 23h19
  2. [VB.Net] Repeater , contenu dynamique
    Par dyree dans le forum ASP.NET
    Réponses: 31
    Dernier message: 11/07/2006, 10h54
  3. [VB.Net] Repeater numero de ligne et data
    Par NicoNGRI dans le forum ASP.NET
    Réponses: 6
    Dernier message: 10/10/2005, 10h20
  4. [VB.NET] Repeater & textbox
    Par Sadneth dans le forum ASP.NET
    Réponses: 7
    Dernier message: 26/09/2005, 11h46
  5. [VB.NET] repeater/datagrid dynamique clique d'un bouton
    Par lucie.houel dans le forum ASP.NET
    Réponses: 11
    Dernier message: 19/07/2005, 16h17

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