我的表单中有多个文本框,如txtTask0,txtTask1 ... txtTask12。
所以我想逐个将这些文本框的值传递到我的web服务中。
for (int i = 0; i <= 12 ; i++)
{
sOUT = ws_service.InsertAchievement(i,txtTask0.Text,txtAchieve0.Text);
}
这里不是传递txtTask0.text而是需要逐个传递“i”值,如
txtTask[i].text
与此类似的东西
TextBox tb = (TextBox) Controls["txtTask" + i];
来自link 但该代码会导致错误,如
Error 92 The best overloaded method match for 'System.Web.UI.ControlCollection.this[int]' has some invalid arguments
如何将多个文本框值传递给循环。?
答案 0 :(得分:3)
你不能这样做,因为Controls [index]需要一个整数作为它的参数,但你传递一个“与整数连接的字符串”它不会起作用,相反你喜欢下面它会工作,希望它会帮助你...
foreach (Control c in this.Controls)
{
int i = 0;
if (c is TextBox)
{
while(i < 10)
{
if (c.Name == "txtTask" + i)
{
MessageBox.Show("This is textBox" + i);
}
i++;
}
}
}
编辑:
如果条件if(c is TextBox)
未正确解析,则执行
foreach (Control c in this.Controls)
{
int i = 0;
while (i < this.Controls.Count)
{
if (c.Name == "txtTask" + i)
{
MessageBox.Show("This is textBox" + i);
}
i++;
}
}
编辑2:
或者,如果您想在aspx页面中的所有文本框控件中循环,请使用以下代码部分。它非常完美。
int count = 0;
foreach (Control c in this.Page.Controls)
{
foreach (Control c1 in c.Controls)
{
int i = 0;
if (c1 is TextBox)
{
while (i < 10)
{
if (c1.ID == "TextBox" + i)
{
count++;
}
i++;
}
}
}
}
Label1.Text = count + " textbox(es) has been found";