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 :

Repeater imbriqué et recup de data


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Par défaut Repeater imbriqué et recup de data
    Bonjour alors voila mon problème.
    Pour afficher des données j'ai besoin d'imbriquer deux repeater.

    En fait j'ai une table qui liste des produits avec les infos quantité, taille, prix.

    Je veux que le premier repeater m'affiche les differentes quantité dispo et ensuite le deuxieme repeater lui aurra pour role de m'afficher pour chaque quantité les tailles et prix differents.

    le probleme que j'ai se situe a priori au niveau du ItemDataBound de mon repeater principal car pour chaque quantité differente, les tailles et prix qui sont affichées sont ceux de la derniere quantité bindé par mon repeater...

    Merci pour votre aide.

    Voici le code de mes repeater coté ascx


    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
     
    <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSourcetoto">
    <HeaderTemplate><h2>Liste des produits</h2><ul></HeaderTemplate>
    <FooterTemplate></ul></FooterTemplate>
    <ItemTemplate>
       <li>Quantite : <%#DataBinder.Eval(Container.DataItem, "Quantite")%><br /></li>
       <asp:Repeater ID="Repeater2" runat="server" DataSourceID="SqlDataSourcetoto2">
            <ItemTemplate>
               Taille <%#DataBinder.Eval(Container.DataItem, "Taille")%>
                 Prix <%#DataBinder.Eval(Container.DataItem, "Prix")%>
            </ItemTemplate>
       </asp:Repeater>
     
    </ItemTemplate>
     
    </asp:Repeater>
     
    <asp:SqlDataSource ID="SqlDataSourcetoto" runat="server" ConnectionString="<%$ ConnectionStrings:V3ConnectionString %>"
        SelectCommand="SELECT DISTINCT [Quantite] FROM [Prix] ORDER BY [Quantite]">
    </asp:SqlDataSource>
    <asp:SqlDataSource ID="SqlDataSourcetoto2" runat="server" ConnectionString="<%$ ConnectionStrings:V3ConnectionString %>"
        SelectCommand="SELECT [Taille], [Prix] FROM [Prix] WHERE ([Quantite] = @Quantite)">
        <SelectParameters>
            <asp:Parameter DefaultValue="1000" Name="Quantite" Type="Int64" />
        </SelectParameters>
    </asp:SqlDataSource>

    et voici le code coté vb

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Protected Sub Repeater1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemDataBound
                If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
                    SqlDataSourcetoto2.SelectParameters.Item("Quantite").DefaultValue = e.Item.DataItem("quantite")
     
     
                End If
     
     
            End Sub

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Tu es conscient que pour chaque élémént de toto, tu vas exécuter une requête toto 2 ?
    Pourquoi tu ne fais pas une jointure directement ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Par défaut
    le probleme est que toutes mes datas d'origine sont dans la meme table. J'ai essayé avec un pivot sql, je recupere bien mes datas comme je le souhaite mais perd l'id du produit a la jointure des données.

    En fait j'ai une table produits avec les champs suivants : PK (forcement :p), Quantite, taille, prix.

    Et je veux afficher un tableau avec en premiere colonne les differentes quantité, et en premiere ligne les tailles differentes. A la jointure des deux, je souhaite afficher le prix cliquable vers un formulaire de commande (et donc en envoyant l'id du produit correspondant en get). Le prob avec mon pivot sql est donc que cet id est paumé.Je suis donc parti sur un repeater imbriqué qui me permettrait en le bidouillant bien d'avoir ça. J'ai bien mes quantité en premiere colonne, mais le deuxieme repeater m'affiche tjs la meme ligne. Il doit bien y avoir un moyen de reinitialiser la value envoyé a la requete sql a utiliser pour mon repeater 2 a chaque ligne générée de mon repeater 1 non ?

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Ton problème est que tu utilises deux datasources, un pour les colonnes et un pour toutes les lignes. En utilisant ta méthode, il faudrait utiliser un datasource par colonne.

    A mon avis, ça doit être possible de faire ça en 1 seule requête, en utilisant une jointure sur la même table.

    Du genre (non testé) :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT p.ID, p.Quantite, p2.Taille, p2.Prix
      FROM Produits p
     INNER JOIN Produits p2 ON p.ID = p2.ID
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Par défaut
    je ne comprend pas bien je met cette requette pour mon repeater 2 ?

    Voici un exemple de la maniere dont je voudrais afficher les datas :

    http://www.promo-flyer.com/Flyerstra...6/Default.aspx

    la seule methode que j'ai trouvé pour faire cela en une seule requette est d'effectuer un pivot SQL, la je peux utiliser un seul repeater mais je perd l'id je suis obligé d'envoyer en get la taille et la quantité. C'est forcement moins propre que d'envoyer uniquement l'id. D'ou le fait que je cherche une solution en imbriquant deux repeater pour avoir la meme chose que mon pivot sql (sans faire de pivot sql :p) et du coup conserver mon id...

    J'espere etre assez clair :s

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    En fait ta base n'est pas normalisée. Tu as des tas de données dupliquées. A mon avis, tu devrais commencer par normaliser ta base, tu auras moins de problèmes ensuite.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

Discussions similaires

  1. Imbriquer des detailsView dans un repeater
    Par calagan99 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 25/04/2007, 17h50
  2. comboBox recup valeur data
    Par totoche dans le forum Flash
    Réponses: 2
    Dernier message: 26/10/2006, 11h58
  3. [numarray] Recuper les Data d'une image et les remodeler.
    Par parp1 dans le forum Calcul scientifique
    Réponses: 6
    Dernier message: 05/04/2006, 17h18
  4. [VB.Net] Repeater numero de ligne et data
    Par NicoNGRI dans le forum ASP.NET
    Réponses: 6
    Dernier message: 10/10/2005, 10h20
  5. [VB.NET] Repeater imbriqué
    Par Sadneth dans le forum ASP.NET
    Réponses: 8
    Dernier message: 18/02/2005, 15h31

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