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 :

Construction dynamique d'une page aspx


Sujet :

ASP.NET

  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut Construction dynamique d'une page aspx
    Bonjour à tous,

    Dans une application asp.net j'ai une page qui va afficher des blocs catégories (div), dans une catégorie je vais afficher plusieurs produits (qui auront un titre, image, prix qui s'affiche dans un bloc compact, un carré en somme).

    Je récupère mes catégories et leurs éléments d'une base (à priori le nombre de catégorie et fixe mais le nombre d'éléments d'une catégorie est variable, mais je préfère que le tout soit dynamique).

    Ma question est : Comment à votre avis je devrais procédé ?
    J'ai deux idées, une première qui ne me plaie pas du tout c'est de construire les bloc div dans une boucle ... La seconde ne me convaincs pas totalement non plus, c'est d'utiliser deux usercontrols un pour catégorie l'autre pour un produit.

    Y a-t-il à votre connaissance une bonne manière de faire, ou en tout cas me conseillez-vous une façon de faire ?

    Merci d'avance.
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  2. #2
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Points : 443
    Points
    443
    Par défaut
    Bonjour,

    Personnellement, vu que c'est que de la consultation et que de l'insertion HTML, je te proposerai de créer un user control qui va construire tout le HTML.

    Il faut juste surcharger la méthode render et générer le html avec HtmlTextWriter. Voici un exemple :

    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
     
    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
        writer.Indent++;
     
        writer.WriteBeginTag("li");
     
        string tmLICssClass = "tmLI";
        writer.WriteAttribute("class", tmLICssClass);
        writer.Write(HtmlTextWriter.TagRightChar);
     
        writer.WriteBeginTag("a");
        writer.WriteAttribute("class", "tmA");
        writer.WriteAttribute("title", "prout");
        writer.WriteAttribute("href", "#");
        writer.Write(HtmlTextWriter.TagRightChar);
     
        writer.Write("lien");
     
        writer.WriteEndTag("a");
     
        writer.WriteEndTag("li");
        writer.WriteLine();
     
        writer.Indent--;
        writer.WriteLine();
    }
    Tu fais tes boucles en fonction de tes données, mais pour moi c'est le moyen le plus simple de faire ce que tu veux, et le plus adapté.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Bonjour Paul et merci pour ta réponse. Elle me plaie bien cette solution.

    Une question encore, si j'ai bien compris c'est dans l'UserControl que tu ferais ta boucle et tu construirais toutes les catégories et leurs produits correspondant en utilisant HtmlTextWriter ?

    Autres questions pourquoi il faut surcharger Render ? Dans mon cas juste pour les styles ? Ne puis-je pas le faire lors de la construction dans le Page_Load ?

    J'avoue que plus j'y pense, moins je sens que je comprends ce que je dois faire

    Merci pour ta réponse
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  4. #4
    Membre régulier
    Profil pro
    developpeur
    Inscrit en
    Février 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Février 2006
    Messages : 69
    Points : 79
    Points
    79
    Par défaut
    Salut,

    Y'a aussi une autre solution , c'est d'utiliser des DataList/Repeater/GridView.

  5. #5
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Points : 443
    Points
    443
    Par défaut
    De mémoire, il ne me semble pas que Page_load reçoive en paramètre un objet HTMLTextWriter.

    La méthode render sert justement à définir le résultat html de ton contrôle (c'est son but dans la vie ).

    Après si tu dois seulement redéfinir certains attributs d'éléménts HTML de ton user control, tu peux effectivement définir des attributs runat="server" sur tes contrôles html et dans ton code behind, modifier les attributs voulus, et tout ça dans l'évènement Page_Load.

  6. #6
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Points : 443
    Points
    443
    Par défaut
    Oui c'est vrai, c'est une solution plus "ASP .Net" on va dire

    A toi de voir ^^

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Citation Envoyé par EsCrOw Voir le message
    Salut,

    Y'a aussi une autre solution , c'est d'utiliser des DataList/Repeater/GridView.
    Salut, merci pour ta réponse

    Je pense que je vais utiliser un Repeater pour afficher mes catégories et dans une catégorie, j'affiche un DataList pour mes produits.

    Le résultat attendu ça serait dans ce type là :

    http://www.peugeot.fr/Produits/Decouvrirlagamme/vp/ (Avec catégories citadines, Compactes ... Et produits les véhicules)

    Ou encore :

    http://www.alapage.com/-/Selection/L...ee_appel=GOOGL
    (Avec Actualités, meilleurs ventes comme catégorie et les livres comme produits).

    Ca te parait bon ?

    Merci à vous deux pour votre précieuse aide.
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  8. #8
    Membre régulier
    Profil pro
    developpeur
    Inscrit en
    Février 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Février 2006
    Messages : 69
    Points : 79
    Points
    79
    Par défaut
    Oui, pour ce type de rendu, j'ai utilisé une DataList, et pour faire de la pagination, il faudra coder (enfin si tu souhaites intégrer de la pagination).

    Tu trouveras de très bon exemple de pagination sur les DataList, sur le net.

    En résumé, utilise le DataList ^^

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Je suis partie dans la solution Repeater et DataList,

    Mais j'ai un problème, j'affiche correctement mon Repeater avec mes différentes catégories, il me reste à afficher le DataList pour chaque catégories. Et la je sèche que faut il mettre ?

    Donc dans le détail :

    - Je récupère une liste d'objet Categories dans une méthode GetCategories.
    - Je crée un ObjectDataSource.
    - Je donne à mon Repeater mon ObjectDataSource comme DataSourceID.

    - Que faut il mettre dans le DataSourceID de mon DataList ?

    Voici le code mon UC :

    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
    <asp:Repeater ID="RCategories" runat="server" DataSourceID="Categories">
        <ItemTemplate>
            <H3><%# ((P3c.Categorie)Container.DataItem).NameCategory%></H3>
            <div class="carlist">
            <asp:DataList runat="server" DataSourceID="Categories ?">
                <ItemTemplate>
    		    <div class="var">
    			    <div class="var-in">
    			    <div class="text"><p>From <br/>7,25.00</p></div>
    			    </div>
    		    </div>
    		    </ItemTemplate>
    		    </asp:DataList>
    		    </div>
        </ItemTemplate>
    </asp:Repeater>
    <asp:ObjectDataSource ID="Categories" runat="server" SelectMethod="GetCategory"
        TypeName="P3c.Serv.CatManager"></asp:ObjectDataSource>
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/02/2008, 11h40
  2. Réponses: 16
    Dernier message: 20/10/2007, 00h24
  3. organisation de tableaux dynamiques dans une page HTML
    Par fallered dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 24/10/2005, 16h04
  4. [C#] Compter le nombre de TEXTBOX sur une page ASPX
    Par alain_27 dans le forum ASP.NET
    Réponses: 9
    Dernier message: 27/05/2005, 14h19
  5. [VB.NET] Imprimer une page aspx
    Par sehing dans le forum ASP.NET
    Réponses: 3
    Dernier message: 22/04/2005, 14h44

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