impossible d’append plus d’un contrôle serveur dynamicment dans asp.net

Bonjour, je suis vraiment coincé dans une de mes tâches de développement depuis quelques jours et je suis incapable de savoir exactement ce qui se passe. S’il vous plaît aider.

J’essaie d’append des lignes de manière dynamic à la page Web comme suit. Je veux utiliser le contrôle du serveur. Mais je ne peux pas append plus d’une ligne.

Pas de chance même si j’ai utilisé une variable de session. Veuillez aider s’il vous plaît 🙂

—————– fichier aspx —————

——————— Code C # derrière ————————– —-

 protected void addRow(object sender, EventArgs e) { int num_row = new int(); //checkpoint num_row = (tbl.Rows).Count; if (Session["tables"] != null) { tbl = (Table)Session["tables"]; } TableRow row = new TableRow(); TableCell cell1 = new TableCell(); TableCell cell2 = new TableCell(); TextBox tb = new TextBox(); CheckBox cb = new CheckBox(); row.ID = "rw" + num_row; cell1.ID = "c" + num_row + "1"; cell2.ID = "c" + num_row + "2"; tb.ID = "txt" + num_row; tb.EnableViewState = true; cb.ID = "chk" + num_row; cell1.Controls.Add(tb); cell2.Controls.Add(cb); row.Cells.Add(cell1); row.Cells.Add(cell2); tbl.Rows.Add(row); Session["tables"] = tbl; } 

Vous ne pouvez voir qu’une seule ligne ajoutée à chaque fois, car les contrôles créés dynamicment ne seront pas disponibles dans les publications.

Lorsque vous cliquez sur Ajouter une ligne pour la première fois, une publication est effectuée, une troisième ligne est ajoutée. Lorsque vous cliquez sur Ajouter une ligne une deuxième fois, la ligne déjà ajoutée ne sera pas disponible et une nouvelle ligne sera ajoutée à nouveau. Enfin, vous ne pourrez voir qu’une seule ligne à chaque fois.

En bout de ligne, vous devez recréer les contrôles ajoutés dynamicment chaque fois lors de la publication dans l’événement page_load.

refer Pourquoi les contrôles utilisateur créés dynamicment disparaissent-ils lorsque les contrôles ne font pas des publications intégrales? également

Pour conserver l’état d’affichage des contrôles ajoutés dynamicment, vous devez générer des identifiants pour les contrôles. Lorsque vous recréez les contrôles lors de la publication, recréez-les avec les mêmes identifiants afin de conserver l’état d’affichage.

Utilisez une logique standard pour générer les ID pour les contrôles. J’espère que cela t’aides.

Mettre à jour:

 protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) { int num_row = (int)Session["No_of_Rows"]; for (int i = 2; i < num_row; i++) { TableRow row = new TableRow(); TableCell cell1 = new TableCell(); TableCell cell2 = new TableCell(); TextBox tb = new TextBox(); CheckBox cb = new CheckBox(); row.ID = "rw" + i; cell1.ID = "c" + i + "1"; cell2.ID = "c" + i + "2"; tb.ID = "txt" + i; tb.EnableViewState = true; cb.ID = "chk" + i; cell1.Controls.Add(cb); cell2.Controls.Add(tb); row.Cells.Add(cell1); row.Cells.Add(cell2); tbl.Rows.Add(row); } } else { Session["No_of_Rows"] = 2; } } protected void addRow(object sender, EventArgs e) { int num_row = (int)Session["No_of_Rows"]+1; TableRow row = new TableRow(); TableCell cell1 = new TableCell(); TableCell cell2 = new TableCell(); TextBox tb = new TextBox(); CheckBox cb = new CheckBox(); row.ID = "rw" + num_row; cell1.ID = "c" + num_row + "1"; cell2.ID = "c" + num_row + "2"; tb.ID = "txt" + num_row; tb.EnableViewState = true; cb.ID = "chk" + num_row; cell1.Controls.Add(cb); cell2.Controls.Add(tb); row.Cells.Add(cell1); row.Cells.Add(cell2); tbl.Rows.Add(row); Session["No_of_Rows"] = tbl.Rows.Count; } 

Après avoir entré la valeur dans la colonne conte, comment enregistrer toutes les valeurs de la table de firebase database?