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 :

[ASP.NET/C#] Tableau dynamique


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2005
    Messages : 65
    Points : 52
    Points
    52
    Par défaut [ASP.NET/C#] Tableau dynamique
    Bonjour à tous,

    N'hésitez pas à déplacer mon post si il n'est pas au bon endroit

    Je cherche à créer un tableau dynamique, c'est à dire à partir de contrôles utilisateur ajouter et enlever des lignes.

    Pour cela, j'ai fait quelques tests...

    Dans ma page aspx, j'ai:
    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
    <table id="Tab1" runat="server">
                <tr>
                    <td align="center">
                        <h3>
                            Coucou</h3>
                    </td>
                    <td>
                        <asp:DropDownList ID="ddpReturnType" runat="server">
                        </asp:DropDownList>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:DropDownList ID="ddpKindProduct1" name="ddpKindProduct1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DdpKindProduct_SelectedIndexChanged">
                        </asp:DropDownList>
                    </td>
                    <td>
                        <asp:DropDownList ID="ddpProduct1" runat="server">
                        </asp:DropDownList>
                    </td>
                    <td>
                        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                    </td>
                </tr>
            </table>
            <asp:Button ID="BtnAdd" Text="Ajouter Ligne" runat="server" 
                onclick="BtnAdd_Click" />
            <asp:Button ID="BtnConfirm" Text="Envoyer" runat="server" />
    Dans ma page aspx.cs, j'ai :
    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
    30
    31
    32
    protected void BtnAdd_Click(object sender, EventArgs e)
        {
            HtmlTableRow newRow = new HtmlTableRow();
     
            // Pour chacune des 3 colonnes
            for (int i = 0; i < 3; i++)
            {
                TextBox tb = new TextBox();
                HtmlTableCell cell = new HtmlTableCell();
                switch (i)
                {
                    case 0:
                        cell.Controls.Add(tb);
                        break;
                    case 1:
                        cell.Controls.Add(tb);
                        break;
                    case 2:
                        cell.Controls.Add(tb);
                        break;
                    case 3:
                        cell.Controls.Add(tb);
                        break;
                    default:
                        break;
                }
                newRow.Cells.Add(cell);
            }
     
            Tab1.Controls.Add(newRow);
        }
    }
    Quand je click une fois sur le bouton add, il me rajoute bien une ligne. Après, il n'en rajoute plus.

    Comment ça se fait ?

    Merci de vos réponses

  2. #2
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 46
    Points : 41
    Points
    41
    Par défaut
    Bonjour,

    je veux te remercier pour votre proposition de code ça m'a aidé beaucoup
    mais je veux savoir si vous avez pu résoudre le problème d'ajout d'autres ligne car j'ai rencontré le même problème.
    merci.

  3. #3
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Citation Envoyé par baptx Voir le message
    Quand je click une fois sur le bouton add, il me rajoute bien une ligne. Après, il n'en rajoute plus.

    Comment ça se fait ?
    Bonjour,

    Je suppose que tu ne stockes pas quelque part (ViewState, Session, DataBase) la liste des contrôles/lignes ajoutés dynamiquement, et ne les recréer pas à chaque chargement de page ?

    Si oui, tu n'as pas le choix => il faut le faire. En effectuant une recherche sur la création dynamique de contrôle sur ce forum tu trouveras bon nombre de posts sur le sujet.

    En espérant t'avoir aidé.

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 46
    Points : 41
    Points
    41
    Par défaut
    merci beaucoup, je vais faire une recherche.

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 46
    Points : 41
    Points
    41
    Par défaut
    Excusez moi mais vraiment je sais pas comment résoudre le problème

    voici mon code de la page aspx.cs:
    --------------------------------------------------------
    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
    protected void BtnAdd_Click(object sender, EventArgs e)
        {
            // créer une instace de ligne
            HtmlTableRow newRow = new HtmlTableRow();
     
            // Pour chacune des 3 colonnes
            for (int i = 0; i < 3; i++)        
            {
                //créer un champ
                TextBox tb = new TextBox();
                HtmlTableCell cell = new HtmlTableCell();   
                cell.Controls.Add(tb);           
                newRow.Cells.Add(cell);
            }      
     
                Tab1.Controls.Add(newRow);           
        }
    ----------------------------------------------------------
    merci de m'aider.

  6. #6
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Bonjour,

    Plutôt que de réécrire toute l'explication ici, je t'invite simplement à consulter ce billet. L'exemple de code est fourni en C# et VB.NET.

    Si tu rencontres un souci n'hésite pas.

  7. #7
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Comme dit precedemment, il faut sauvegarder le fait que tu as rajouté des lignes. Par exemple dans le viewstate. Et ensuite les charger dans le page_load.

    Ca donnera :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    protected void Page_Load(object sender, EventArgs e)
    {
    ...ton code
     
      int nbLignesAjoutees = 0;
    if(ViewState["nbLignes"] != null)
    {
     nbLignesAjoutees = (int)ViewState["nbLignes"];
    }
    for(int j = 0; j < nbLignesAjoutees ; j++)
    {
    for (int i = 0; i < 3; i++)
    {
    //créer un champ
    TextBox tb = new TextBox();
    HtmlTableCell cell = new HtmlTableCell();
    cell.Controls.Add(tb);
    newRow.Cells.Add(cell);
    }
     
    Tab1.Controls.Add(newRow);
    }
    }
     
    protected void BtnAdd_Click(object sender, EventArgs e)
    {
    // créer une instace de ligne
    HtmlTableRow newRow = new HtmlTableRow();
     
    // Pour chacune des 3 colonnes
    for (int i = 0; i < 3; i++)
    {
    //créer un champ
    TextBox tb = new TextBox();
    HtmlTableCell cell = new HtmlTableCell();
    cell.Controls.Add(tb);
    newRow.Cells.Add(cell);
    }
     
    Tab1.Controls.Add(newRow);
    int nbCases = (int)ViewState["nbLignes"];
    nbCases++;
    ViewState["nbLignes"] = nbCases;
    }
    a+

  8. #8
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 46
    Points : 41
    Points
    41
    Par défaut
    merci pour votre reponse, j'ai utilisé le code que vous m'avez proposé, ça s'éxecute sans erreurs mais lorsque je clik sur le bouton il me retourne vers le code et exactement dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int nbCases = (int)ViewState["nbLignes"];
    et me dit :
    La référence d'objet n'est pas définie à une instance d'un objet.
    j'ai beaucoup cherché sur internet mais j'arrive pas a resoudre le problème.
    si vous avez une idée merci.

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

Discussions similaires

  1. asp.net creer controls dynamiquement
    Par windows2056 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 19/07/2011, 18h53
  2. Réponses: 4
    Dernier message: 30/06/2011, 13h12
  3. [asp.net mvc3] Formulaire dynamique selon DB
    Par ObseLeTe dans le forum ASP.NET MVC
    Réponses: 0
    Dernier message: 18/03/2011, 00h40
  4. Réponses: 7
    Dernier message: 13/11/2009, 14h15
  5. [ASP.NET C#]Treeview Dynamique
    Par hippoX dans le forum ASP.NET
    Réponses: 1
    Dernier message: 16/08/2007, 09h52

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