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 :

[C#] UserControl dans Repeater


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Par défaut [C#] UserControl dans Repeater
    Bonjour à tous!

    J'utilise un UC dans mon repeater, mais je rencontre un problème...
    Pour chaque item, le repeater affiche la même chose alors que les valeurs sont différentes!
    Concrètement, le dernier passage dans le repeater écrase toutes les données précédentes.

    Au niveau code, j'ai quelque chose comme(pas le code exact sous la main...):

    dans mon aspx:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <asp:repeater id="repeater1" runat="server">
    <div id="annonce">
    <uc:Usercontrol1 id="uc1" runat="server" />
    </div>
    </asp:repeater>
    Dans mon code behind, j'ai une liste d'objet que je bind sur mon repeater.
    C'est un objet qui represente un message donc ca contient en gros titre, contenu et auteur.
    J'arrive jusque dans mon databound sans soucis avec les bonne valeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    repeater1_ItemDataBound{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
    Object objet = e.Item.DataItem
    UserControl1 uc = e.findControl("uc1");
    uc.remplir = objet;
    }
    }
    Donc a chaque tour tout se passe bien, la méthode remplir du UseControl est appelé et rempli avec les bonnes valeurs, mais à l'affichage, il n'y a que les données du dernier passage qui sont affiché autant de fois qu'il y'avait d'élément dans la liste!

    Je pense que le problème vient du fait que les id sont les même dans chaque item du repeater et que du coup la dernier boucle écrit dans tous les items, mais je ne sais pas comment faire pour contourner celà!!

    Merci par avance pour votre aide!

  2. #2
    Invité
    Invité(e)
    Par défaut
    T'es sûr que l'instruction renseigne bien différentes informations à chaque passage. Parce que j'ai l'impression que tu ne lui passe la donnée que t'as récupéré de e.item.DataItem.

    Essaies plutôt un code ASP.Net plus clean avec ça :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <asp:repeater id="repeater1" runat="server">
       <ItemTemplate>
           <div id="annonce">
             <uc:Usercontrol1 id="uc1" runat="server" />
           </div>
       </ItemTemplate>
    </asp:repeater>
    Dernière modification par Deepin ; 30/05/2011 à 12h00.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Par défaut
    Merci pour ta réponse!
    Alors en effet c'est plus clean avec ce code asp mais ca change pas le problème ^^
    Et concernant le remplissage, en mode debug quand je passe dans la fonction remplir du UC, je vois bien les bonnes infos à chaque tour! C'était juste une erreur dans mon post -_-

    j'ai oublié le paramètre qui est bien l'item du repeater.

    Donc je pense qu'elles sont bien écrasé par le dernier tour!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Dans ce cas on aura besoin du code de ta fonction qui met à jour ton UserControl

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Par défaut
    Elle est très basic!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Annonces Remplir
    {
    set{
    Annonces annonce = value;
    literal1.Text = annonce .Titre;
    literal2.Text = annonce .Contenu;
    literal3.Text = annonce.Auteur;
    }
    }

  6. #6
    Invité
    Invité(e)
    Par défaut
    Vrai qu'elle est basique! mais la bonne méthode était de passer par le binding ASP.Net je trouve.
    Avec ce code je ne peux rien te dire de plus.

Discussions similaires

  1. [C# 1.1] - UserControl dans Internet Explorer
    Par Erakis dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/08/2006, 21h10
  2. [C#] Usercontrol dans usercontrol -> pb compilation
    Par annalady dans le forum Windows Forms
    Réponses: 1
    Dernier message: 11/04/2006, 15h38
  3. [VB.NET]Afficher plusieurs UserControls dans un Panel
    Par Golzinne dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/02/2006, 21h29
  4. [VB.net] TextBox dans Repeater
    Par TekP@f dans le forum ASP.NET
    Réponses: 2
    Dernier message: 06/05/2005, 13h38
  5. [C#] Déclencher action dans Repeater avec LinkButton
    Par globeriding dans le forum ASP.NET
    Réponses: 13
    Dernier message: 13/05/2004, 15h29

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