我有一个.net网络表单,C#后端。
我需要帮助循环遍历占位符中的嵌套控件。我有一个占位符,我基本上基于从存储过程返回的数据动态创建动态表单控件。占位符具有一个即时创建的表。这个表填充了复选框和文本框(它们彼此“附着”,通过id ...没有真正附加,但它们具有相同的数字id组件。)
我需要一些循环遍历占位符的帮助,以及要检测的表: 检查哪些复选框,以及文本框中的数据。并非所有复选框都有文本框。
ASP.NET
<asp:PlaceHolder ID="phMyStuff" runat="server"></asp:PlaceHolder>
C#
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
MyFlag= bool.Parse(dr["MyFlag"].ToString());
CheckBox CB = new CheckBox();
CB.Text = dr["StuffName"].ToString();
CB.ID = dr["StuffID"].ToString();
TableRow TR = new TableRow();
TableCell TD = new TableCell();
TD.Controls.Add(CB);
TR.Controls.Add(TD);
if (MyFlag== true)
{
TextBox TB = new TextBox();
TB.ID = string.Format("tb_{0}", dr["StuffID"].ToString());
TB.Width = 100;
TableCell TD2 = new TableCell();
TD2.Controls.Add(TB);
TR.Controls.Add(TD2);
}
myTable.Controls.Add(TR);
}
}
conn.Close();
conn.Dispose();
phMyStuff.Controls.Add(myTable);
我在这个循环中的两个数据是:
答案 0 :(得分:0)
确保每次使用相同ID的每个PostBack加载数据加载数据并执行以下操作:
protected void btnGetControlIds_Click(object sender, EventArgs e)
{
GetControlIds(phMyStuff);
}
private void GetControlIds(Control parent)
{
foreach (Control ctrl in parent.Controls)
{
if (ctrl is TextBox || ctrl is CheckBox)
{
Response.Write(ctrl.ID);
}
else
{
if (ctrl.HasControls())
{
GetControlIds(ctrl);
}
}
}
}