多个Textbox值到数据库中

时间:2012-01-23 09:16:46

标签: asp.net c#-2.0

我的表单中有多个文本框,如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 

如何将多个文本框值传递给循环。?

1 个答案:

答案 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";