Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1085 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Ajout de lignes dans une table

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ajout de lignes dans une table

n°2049851
manar-info
Posté le 18-01-2011 à 12:04:21  profilanswer
 

Bonjour à tous,
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:
   -------------------------------------------------------------------
<table id="Tab1" runat="server">
                 <tr>
           <th>Nom Complet</th>
           <th>CIN</th>
           <th>Date de Naissance</th>
       </tr>    
</table>
<asp:Button ID="BtnAdd" Text="Ajouter Ligne" runat="server" onclick="BtnAdd_Click"/>
  ---------------------------------------------------------------------
 
Dans ma page aspx.cs, j'ai:
  ---------------------------------------------------------------------
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);            
    }
  -------------------------------------------------------------------
j'ai cherché beaucoup. si vous avez une idée merci de m'aider  :??:

mood
Publicité
Posté le 18-01-2011 à 12:04:21  profilanswer
 

n°2049870
manar-info
Posté le 18-01-2011 à 13:03:11  profilanswer
 

j'ai oublié de signaler le problème:
une seule ligne s'ajoute et stop, après meme si je clique rien ne se passe.
merci

n°2050246
ov3rflow
Overrage
Posté le 19-01-2011 à 15:37:52  profilanswer
 

Utilise plutôt le contrôle   asp:Table  
 
Je pense que le row que tu ajoute n'est pas dans le ViewState.

n°2050258
manar-info
Posté le 19-01-2011 à 16:18:33  profilanswer
 

tout d'abord merci pour votre réponse.
j'ai fait une recherche sur ce ViewState mais je sais pas comment la manipuler.

n°2051126
TotalRecal​l
Posté le 23-01-2011 à 00:16:06  profilanswer
 

ov3rflow a écrit :

Utilise plutôt le contrôle   asp:Table

Je pense que le row que tu ajoute n'est pas dans le ViewState.


Pareil.
Si tu ne comprends pas le problème sous jacent manar-info je te conseille de te renseigner un peu, c'est crucial en web de comprendre ces notions...
Dans ton cas pour faire simple, pour conserver tes lignes d'un post back à l'autre tu dois stocker quelque part (en session par exemple) les objets que tu veux restituer dans ton tableau et reconstruire celui-ci entièrement à chaque fois, pas juste la dernière ligne.
Ou bien utiliser un type de contrôle qui permet l'exploitation du Viewstate.


Message édité par TotalRecall le 23-01-2011 à 00:16:48

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2051144
manar-info
Posté le 23-01-2011 à 11:04:01  profilanswer
 

je vous remercie j'ai résolu le problème en utilisant les viewstate.
voila le code si quelqu'un rencontrera le meme problème:

Citation :

protected void Page_Load(object sender, EventArgs e)
    {        
        int nbLignesAjoutees = 0;
        if (!IsPostBack)
        {
            ViewState["nbLignes"] = 0;
        }
        else
        {
                nbLignesAjoutees = (int)ViewState["nbLignes"];
             
            for (int j = 0; j < nbLignesAjoutees; j++)
            {
                HtmlTableRow newRow = new HtmlTableRow();
                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++)
            {
                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;
         
    }


 
je cherche maintenant à ajouter les scrollbar à mon tableau.
 
merci.

n°2051168
TotalRecal​l
Posté le 23-01-2011 à 14:08:26  profilanswer
 

Je ne comprend pas pourquoi tu te donnes la peine d'implémenter (mal en plus et de façon aussi restrictive) quelque chose qui est supporté de façon native ?  
Si c'est juste pour apprendre soit, mais bon...


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2051176
manar-info
Posté le 23-01-2011 à 15:25:45  profilanswer
 

vous m'avez dit d'utiliser les viewstate et voila je que j'ai fait, je comprend pas c'est quoi cette chose qui est supporté de façon native ou bien ce que j'ai fait mal dans le code. j'aimerai bien que tu m'explique ou tu me précise dans les lignes de code  l'erreur que j'ai commis.
merci.

n°2051178
TotalRecal​l
Posté le 23-01-2011 à 15:33:24  profilanswer
 

Non, on a dit que la perte de tes lignes ajoutées d'un postback à l'autre était lié au Viewstate, pas de s'en servir pour contourner le problème, nuance ;).
Disons que ton code est parfait, dans le sens où il est propre et doit parfaitement fonctionner pour l'usage que tu en fais. Tu sembles également avoir compris comment fonctionne le viewstate et comment l'utiliser pour mémoriser temporairement une info.
Ce que je constatais c'est que ton code ne peut servir à rien en l'état : tout ce que tu y saisis sera perdu d'un postback à l'autre, et je présume que ce n'est pas ce que tu veux. D'où le fait que plutôt que stocker la structure du tableau, je me serai intéressé à son contenu.


Message édité par TotalRecall le 23-01-2011 à 15:34:19

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2051183
manar-info
Posté le 23-01-2011 à 16:23:49  profilanswer
 

oui exactement j'ai voulu m'en servir des viewstate juste pour garder les données inserées dans le tableau tant que l'utilisateur continue à insèrer ses lignes. après je vais faire un bouton où toutes les enregistrements vont etres insérés dans la base de donnée.
et comme ça lors d'un autre appel de la page le tableau s'affichera vide pour une autre insertion.
merci pour votre explication. si vous avez d'autres remarques merci de me faire part.

mood
Publicité
Posté le 23-01-2011 à 16:23:49  profilanswer
 

n°2051188
TotalRecal​l
Posté le 23-01-2011 à 17:39:04  profilanswer
 

Mais là justement tout ce que fera le viewstate c'est permettre de conserver le nombre de lignes créées, par leur contenu. Et vu le mode de fonctionnement du viewstate (allers retours avec le client) ce serait une aberration de l'utiliser à cette fin. La session est déjà plus appropriée.
Par ailleurs, ton code contient beaucoup de réplication de code inutile et l'ajout de lignes au tableau gagnerait à se faire côté client, en JS, plutôt que par le serveur.


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2052564
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 28-01-2011 à 09:06:35  profilanswer
 

Fermeture suite à création de doublon : http://forum.hardware.fr/hfr/Progr [...] 2257_1.htm


---------------
J'ai un string dans l'array (Paris Hilton)

Aller à :
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Ajout de lignes dans une table

 

Sujets relatifs
Ajout de port imprimante TCP/IP Lexmark en vbsOptimisation ecriture dans BDD à partir d'un table HTML [résolu]
[VBS] Supprimer un bloc de lignesXML XSL propriété text indent sur plusieurs lignes...
Script Php pour récupere n° de semaine dans une tableProblème avec la fonction update pour modifié une table d'un BDD [réso
Supprimer une ligne d'une table en php [résolu]Recuperer les insertions récentes dans une table
Actualiser une liste de données tirées d'une table Mysql en PHP 
Plus de sujets relatifs à : Ajout de lignes dans une table


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR