我有一个web.net应用程序asp.net。
我在Page_Load
中动态创建了54个文本框这是代码
protected void Page_Load(object sender, EventArgs e)
{
for(i = 0, i<54, i++)
{
Textbox TestTextbox = new texbox();
TestTextBox.ID = "Reg" + i ;
TestTextBox.Attributes.add("runat","server");
TestTextBoxAttributes.Add("AutoPostBack", "true");
//display to a table called table1 created in the aspx page
}
}
在页面上,我有一个名为button1的按钮,以及一个名为“OnClickEvent”的点击事件,我想捕获所有文本框的ID和值。
我使用了Page.Controls.Count,我只得到1,我已经添加到aspx页面的表,我通过使用Request.Form获取ID但是我没有得到值。
我将所有文本框添加到我在aspx文件中创建的表中。
答案 0 :(得分:1)
您可以遍历控件并检查它们是否为TextBox类型:
for(int i = 0, i<54, i++)) {
var control = Page.FindControl("Reg" + i);
//get the value of the control
}
答案 1 :(得分:0)
您没有将TextBox添加到页面,因此无论如何都找不到它。其次,将runat=server
和AutoPostBack=true
添加为字符串也不起作用。 (更不用说你的代码片段充满了错误)
//a loop uses ';', not ','
for (int i = 0; i < 54; i++)
{
//declare a new dynamic textbox = CaSe SeNsItIvE
TextBox TestTextbox = new TextBox();
TestTextbox.ID = "Reg" + i;
//if you want to add attibutes you do it like this
TestTextbox.AutoPostBack = true;
TestTextbox.TextChanged += TestTextbox_TextChanged;
//add the textbox to the page
PlaceHolder1.Controls.Add(TestTextbox);
}
如果你想循环所有控件,你可以做这样的事情
//loop all the controls that were added to the placeholder
foreach (Control control in PlaceHolder1.Controls)
{
//is it a textbox
if (control is TextBox)
{
//cast the control back to a textbox to access it's properties
TextBox tb = control as TextBox;
string id = tb.ID;
}
}