【发布时间】:2018-02-19 08:47:26
【问题描述】:
单击“下载”按钮时,我需要遍历页面上所有动态生成的文本框。以下代码不返回任何内容:
protected void Download_Click(object sender, EventArgs e)
{ //???
foreach (Control child in this.form1.Controls)
{
if (child.GetType().ToString().Equals("System.Web.UI.WebControls.TextBox")) //child is somehow never textbox
{
TextBox textBox = (TextBox)child;
System.Diagnostics.Debug.WriteLine(textBox.Text);
}
}
}
我通过调用 AddTextbox 函数来创建文本框:
private void AddTextbox(string id, bool isNumber)
{
TextBox textBox = new TextBox();
textBox.ID = id; //set ID
if (isNumber){ textBox.Attributes.Add("type", "number"); }; //if only numbers can be added, html attribute 'type = "number"' is added
form1.Controls.Add(textBox);
form1.Controls.Add(new LiteralControl("<br />")); //just add <br /> html element
}
【问题讨论】:
-
您是否在表单初始化时重新创建动态创建的文本框?此外,如果 TextBox 不直接位于表单上,则需要迭代控件的子级。
-
不,我想我不是。我用一个函数创建它们,然后用第二个函数迭代它们以填充值,然后我试图下载它们,如this question所示。我可以要求您提供一些参考或教程,基于这些我将能够做到这一点吗? >第二个问题:是的,你是对的,我也需要解决这个问题。
-
除了诊断,你调试吗?
-
是的。 child 永远不是文本框,if 语句中的断点甚至不会触发一次。
-
其实我不清楚你想要实现什么。 :(