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 :

Création d'un tableau dynamique


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Informatique Senior
    Inscrit en
    Juin 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Informatique Senior

    Informations forums :
    Inscription : Juin 2006
    Messages : 108
    Par défaut Création d'un tableau dynamique
    Bonjour,
    j'ai deux page "page1.aspx" et "page1.aspx.cs".

    Dans la page "page1.aspx.cs", j'ai chargé un DataSet de données que j'ai lues à partir de la base de données.

    Ce que je veux faire, c'est, afficher les entrées du DataSet dans la page "page1.aspx" dans un tableau que la taille variera dynamiquement selon la taille du DataSet qui a été préalablement chargé dans "page1.aspx.cs".

  2. #2
    Membre averti
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Par défaut
    Je te donne un exemple : on a une classe client qui contient les champs suivants num, nom, prenom.
    Et on a une dataset qui contient un table client :
    Maintenant on va afficher toutes les enregistrements de la table client sur la page1.aspx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <body>
    <form>
    <table>
    <tr><td>num</td><td>nom</td><td>prenom</td></tr>
    <%  foreash(client c in ds[‘nomdelatableclient’]{%>
    <tr><td><%=c.num%></td><td><%=c.nom%></td><td><%=c.prenom%></td></tr><% }%>
    </table>
    </form>
    </body>

  3. #3
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Pourquoi ne pas utiliser un GridView?

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Informatique Senior
    Inscrit en
    Juin 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Informatique Senior

    Informations forums :
    Inscription : Juin 2006
    Messages : 108
    Par défaut
    Comme je débute en C#,
    j'ai trouvé un exemple de code qui lit depuis la base et stocke dans un DataSet. J'ai donc suivi cet exemple.
    Est-ce qu'il est possible d'utiliser un gridView à cet effet?

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Informatique Senior
    Inscrit en
    Juin 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Informatique Senior

    Informations forums :
    Inscription : Juin 2006
    Messages : 108
    Par défaut
    J'ai réussi à stocker les données lues depuis la base dans un DataSet.
    J'ai vérifié que j'ai les bonnes valeurs en débogguant mon code.

    Cependant, mon problème est que l'objet DataSet, que j'ai rempli dans page1.aspx, est invisible depuis "page1.aspx.cs".
    Lorsque je référence cet objet DataSet dans "page1.aspx.cs", j'ai une erreur de compilation.

    Voici mon code

    =================page1.aspx.cs========================
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("SELECT * FROM Articles", oConnection);
     
    //Create a new dataset with a table: Articles
     
    DataSet myDataSet = new DataSet("Articles");
     
    //Fill the dataset and table with the data retrieved by the select command
     
    myDataAdapter.Fill(myDataSet, "Articles");
    ===================================================


    =================page1.aspx.cs========================
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <% for (int i = 0; i < myDataSet.Tables["Articles"].Rows.Count; i++)
                   {
                       Label3.Text = myDataSet.Tables["Articles"].Rows[i]["referenceArticle"].ToString();
                       Label4.Text = myDataSet.Tables["Articles"].Rows[i]["categorie"].ToString();%>
                   <tr>
                        <td><asp:Label ID="Label3" runat="server" Text=""></asp:Label></td>
                        <td><asp:Label ID="Label4" runat="server" Text=""></asp:Label></td>
                   </tr>
     
                <%} %>
    ===================================================

    L'erreur est :
    L'objet myDataSet n'est pas reconnu dans la page "page1.aspx.cs".

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 5
    Par défaut
    Si tu utilises Visual Studio . lorsque tu ajoutes le controle GridView tu as la possibilité de définir une chaine de connexion et les la table a utilisé et il se charge de tous le reste, sinon personnelle je préfère utiliser un datareader car c'est plus performant que les dataset .(Les dataset sont vraiment plus utilie lorsque tu utilises du binding).

  7. #7
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par ali.ensi Voir le message
    Comme je débute en C#,
    j'ai trouvé un exemple de code qui lit depuis la base et stocke dans un DataSet. J'ai donc suivi cet exemple.
    Est-ce qu'il est possible d'utiliser un gridView à cet effet?
    En fait, une fois que tu as ton Dataset, tu peux utiliser le contrôle que tu veux pour l'afficher sur ta page.

    Tu peux effectivement utiliser une gridview, un repeater, une table, un listview...

    Si le but est juste d'affricher tes informations sous la forme d'un tableau, le mieux est probablement un repeater (parce que mettre un foreach dans la page aspx, ca rappelle un peu trop l'asp facon 1996), qui sera le plus light de ces controles...

    Dans ce cas, tu feras qq chose comme :
    dans la page aspx
    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
     
    <asp:Repeater id="monRepeater" runat="server">
     
    <HeaderTemplate>
    <table border="1" width="100%">
    <tr>
    <th>Nom</th>
    <th>Prénom</th>
    <th>Age</th>
    </tr>
    </HeaderTemplate>
     
    <ItemTemplate>
    <tr>
    <td><%#Container.DataItem("nom")%></td>
    <td><%#Container.DataItem("prenom")%></td>
    <td><%#Container.DataItem("age")%></td>
    </tr>
    </ItemTemplate>
     
    <FooterTemplate>
    </table>
    </FooterTemplate>
     
    </asp:Repeater>
    et, dans ton code-behind, quelque chose genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    protected void Page_Load(object sender, EventArgs e){
     
      if (!Page.IsPostBack){
        monRepeater.DataSource=GetDataSetFromMyDatabase();
        monRepeater.DataBind();
      }
    }
    Je te laisse faire la méthode GetDataSetFromMyDatabase

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 5
    Par défaut
    c'est normal que page1.aspx.cs soit invisible (le NOM_PAGE.aspx.cs ca s'appelle du code behind il gere les evenement liée a a la page , chargement ,click sur bouton,initialistaion etc), sinon tu peux simplement créer un label puis luis affecter un string contenont un tableau HTML avec tous tes donnée depuis du code behind bien sur . seulement je te conseil d'utiliser un GridView c'est plus facile et c'est plusn propre.

  9. #9
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par mteffaha Voir le message
    Si tu utilises Visual Studio . lorsque tu ajoutes le controle GridView tu as la possibilité de définir une chaine de connexion et les la table a utilisé et il se charge de tous le reste, sinon personnelle je préfère utiliser un datareader car c'est plus performant que les dataset .(Les dataset sont vraiment plus utilie lorsque tu utilises du binding).
    Mal, mal, mal...

    Si tu définis ta chaine de connexion, ta requête et tout le tralala dans ta page web, tu embarques pour un sacré cauchemar au moment de la maintenance...

    Utiliser un DataReader pour lire toutes les données que tu reçoit ne te fait rien gagner par rapport à l'utilisation d'un DataSet.

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  10. #10
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par Philippe Vialatte Voir le message
    Utiliser un DataReader pour lire toutes les données que tu reçoit ne te fait rien gagner par rapport à l'utilisation d'un DataSet.
    Preuve

  11. #11
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Preuve
    Oarf, l'autre....

    Si j'ai le temps, je fais un petit prog. de test et je le mets à dispo, mais en interne, le Fill du DataAdapter appelle un datareader, qu'il lit jusqu'au bout

    Si tu n'ajoutes pas de relations ou autres contraintes (un simple select, quoi), la différente est infinitesimale par rapport à la récupération de données

    En plus, un datareader garde la connexion ouverte pendant tout le temps de la lecture, d'ou des problèmes éventuels de lock ou d'épuisement de tes connections dispo ( et, oui, ca m'est arrivé ...et en faisant des dispose, mais sur une page qui prends un peu de temps... )

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  12. #12
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par Philippe Vialatte Voir le message

    En plus, un datareader garde la connexion ouverte pendant tout le temps de la lecture, d'ou des problèmes éventuels de lock ou d'épuisement de tes connections dispo ( et, oui, ca m'est arrivé ...et en faisant des dispose, mais sur une page qui prends un peu de temps... )
    Ouais mais si tu remplis un collection d'objets, que tu fermes ton dr et que tu retournes cette collection à ta page, tu n'as pas ce pb

  13. #13
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Ouais mais si tu remplis un collection d'objets, que tu fermes ton dr et que tu retournes cette collection à ta page, tu n'as pas ce pb
    Tout dépends du cas d'utilisation

    La, on es sur une demande de niveau débutant, à base de tables et de DataSet...

    Et encore, en terme de performances, je suis même pas sur que ca change grand chose

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  14. #14
    Membre confirmé
    Homme Profil pro
    Développeur Informatique Senior
    Inscrit en
    Juin 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Informatique Senior

    Informations forums :
    Inscription : Juin 2006
    Messages : 108
    Par défaut
    Merci pour vos réponses. Philippe, ta solution est la bonne à un détail près.
    Dans mon code page1.aspx, j'ai du faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%# DataBinder.Eval(Container.DataItem, "nom") %>
    à la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><%#Container.DataItem("nom")%></td>"
    Celui ci génère en fait l'erreur de compilation suivante :

    Error 1 No overload for method 'ToString' takes '3' arguments

  15. #15
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par ali.ensi Voir le message
    Error 1 No overload for method 'ToString' takes '3' arguments
    C'est ca de taper du code dans firefox...pas de compilation

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  16. #16
    CUCARACHA
    Invité(e)
    Par défaut
    Citation Envoyé par Philippe Vialatte Voir le message
    Mal, mal, mal...
    + 1

    Il ne faut pas le faire sauf (à la rigueur pour une maquette).

    Pour ma part je ne jure que par les repeaters car c'est le composant qui offre la plus grande flexibilité mais il est vrai qu'il fait maîtriser plus de choses.

    ++

    Laurent Jordi

  17. #17
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par Laurent Jordi Voir le message
    Pour ma part je ne jure que par les repeaters car c'est le composant qui offre la plus grande flexibilité mais il est vrai qu'il fait maîtriser plus de choses.
    Si tu ne jures que par les repeater, fais-toi plaisir, et passe une demi-journée à travailler avec le composant listview...

    Je ne l'ai pas abordé dans le post, parce que ca n'aide pas à clarifier la réponse, mais dans le genre "repeater sous testosterone", c'est pas mal

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  18. #18
    CUCARACHA
    Invité(e)
    Par défaut
    Je connais, c'est vrai que c'est très puissant mais le repeater est plus clair dans ma tête de vieux... En plus je crée mes propres composants compatible Microsoft Ajax avec des repeater, le code généré est bien plus propre et léger que celui généré par le listview.

    De toutes les façons je vais bientôt arreter l'asp.net (html) pour passer à silverlight 4 car j'ai enfin l'infrastructure qui me permet de le faire (3 ans d'économies pour réunir le tout).

    ++

    Laurent

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

Discussions similaires

  1. Création d'un tableau dynamique
    Par Stella74 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/11/2007, 14h12
  2. [FPDF] Création d'un tableau dynamique
    Par Little_flower dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 17/10/2007, 07h50
  3. Création d'un tableau dynamique
    Par Faro dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 07/04/2007, 09h03
  4. Création d'un tableau dynamique avec XSL-FO
    Par lionelbrizuela dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 31/01/2006, 11h04

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