Несколько значений Textbox в базу данных - PullRequest
0 голосов
/ 23 января 2012

В моей форме несколько текстовых полей, таких как txtTask0, txtTask1 ... txtTask12.

поэтому я хочу передать значения этих текстовых полей в мой веб-сервис по одному.

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];

из этой ссылки Но этот код приводит к ошибке, как

Error   92  The best overloaded method match for 'System.Web.UI.ControlCollection.this[int]' has some invalid arguments 

Как я могу передать несколько значений текстового поля в цикл .?

1 Ответ

3 голосов
/ 23 января 2012

Вы не можете так делать, потому что 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";
...