Comment accéder à de créer dynamiquement des contrôles serveur dans asp.net

J'ai créé une page web et j'ai utilisé pour ajouter des contrôles côté serveur à la table de façon dynamique.

J'ai affecté individuellement les id..
Mais je suis incapable d'accéder à ces de créer dynamiquement des contrôles serveur.

De code C#:

 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;
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
TextBox tb = new TextBox();
int num_row = Convert.ToInt16(tbl.Rows.Count);
for (int i = 1; i < num_row; i++)
{
string tstr = "txt" + i;
tb = (TextBox)this.FindControl(tstr);
}
Label1.Text = tb.Text;
}

code asp:

    <form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="textbox value is"></asp:Label>
<asp:Table ID="tbl" runat="server">
<asp:TableRow ID="rw0">
<asp:TableCell ID="c01" Width="100px">
<asp:CheckBox runat="server" ID="chk0" />
</asp:TableCell>
<asp:TableCell ID="c02" Width="100px">
<asp:TextBox runat="server" ID="txt0" />
</asp:TableCell></asp:TableRow>
<asp:TableRow ID="rw1">
<asp:TableCell ID="c11" Width="100px">
<asp:CheckBox ID="chk1" runat="server" />
</asp:TableCell>
<asp:TableCell ID="c12" Width="100px">
<asp:TextBox runat="server" ID="txt1" />
</asp:TableCell></asp:TableRow>
</asp:Table>
<asp:Button ID="btn1" runat="server" Text="Add Row" OnClick="addRow" />
</div>
<asp:Button ID="btnSubmit" runat="server" OnClick="btnSubmit_Click" Text="Submit" />
</form>

Merci de m'aider dans ce.

  • Salut Alwyn, pouvez-vous pls laissez-moi savoir exactement où avez-vous le code ci-dessus? je veux dire, dans quel cas, ou dans lesquels la méthode?
  • Salut Saranya j'ai édité le code pour plus de clarté.
  • J'ai posté une réponse sur le fond. pls vérifier.
  • La raison pour laquelle vous n'obtenez pas toutes les valeurs de label1 est , votre logique est telle que seul le dernier accès de zone de texte valeur est indiquée dans l'étiquette. pour une raison quelconque, l'état d'affichage de la dernière zone de texte créée dynamiquement n'est pas maintenu 🙁 et votre étiquette de valeur est null
  • trouve l'erreur. problème, c'était logique. int num_row = (int)Session["No_of_Rows"] + 1; supprimer les +1 et cela fonctionne..Aussi votre logique est telle que seule la valeur de la dernière zone de texte est affiché dans l'étiquette. Utiliser un stringbuilder et les ajouter à l'intérieur de la boucle pour avoir des valeurs de tous.