Создание цикла, который будет редактировать 60 имен TextBox? - PullRequest
0 голосов
/ 17 сентября 2009

текстовое поле set1 = от 1 до 30 = в запросе имя = от br1id до br30id

текстовое поле, установленное от 2 = 1 до 30 = в результате вывода

Я не понимаю, как создать цикл на основе 30 различных имен текстовых полей?

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

try
{

   MySqlConnection mysqlCon = new MySqlConnection(
      "server= 195.159.253.229;" +
      "Database = bruker;" +
      "user id=bobby;" +
      "password=LoLOW###;");  

   MySqlCommand cmd1 = new MySqlCommand(
      "SELECT brukernavn From bruker where ID = '" + br1id.Text + "';", mysqlCon);

   mysqlCon.Open();

   navX[0] = cmd1.ExecuteScalar().ToString();
   br1txt3.Text = navX[0];   
}

Ответы [ 4 ]

3 голосов
/ 17 сентября 2009

Вы хотите использовать перечислитель управления.

Предполагается, что это WinForms:

foreach(Control c in this.Controls) {
    if(c is TextBox)
        Console.WriteLine(c.Text);   
}

И на самом деле, я думаю, что это будет работать и для ASP.Net. (Даже если Control находится в другом пространстве имен.)

ОДНАКО !: Вот для чего и создана сетка данных.

1 голос
/ 17 сентября 2009

Вы действительно должны пересмотреть свой дизайн, если у вас есть 600 TextBox элементов управления. Святая корова.

Кроме того, ваш SQL очень сильно подвержен SQL-инъекции .

То, что вы ожидаете от , в частности , сделать невозможно, поскольку во время выполнения отсутствует динамическая оценка C #. Что вам нужно сделать, это создать коллекцию элементов управления, которые вы хотите использовать - в том порядке, в котором вы хотите их использовать - затем перечислить этот список для использования в вашем запросе. Однако этот запрос должен быть полностью переписан для использования параметров.

0 голосов
/ 17 сентября 2009

Да на все предыдущие ответы (600 текстовых полей? 600 для идентификаторов и еще 600 для результатов запроса?), Но если вы действительно хотите сделать это, в качестве метода также измените SQL на:

StringBuilder sb = new StringBuilder(
         "SELECT brukernavn From bruker where ID In (");
foreach(Textbox tb in IdTextboxes)  sb.Append(tb.Text + ",");  
string SQL = sb.ToString(0,sb.Length - 1) + ")";

MySqlConnection mysqlCon = 
     new MySqlConnection("server=195.225.0.218; " +
          "Database = bruker; user id=huggy; password=LoLOW;");   
cmd1 = new MySqlCommand(SQL, mysqlCon);   
0 голосов
/ 17 сентября 2009

Вот как получить элемент управления по имени внутри формы:

        // get control by name:
        TextBox tb = this.Controls["textBox1"] as TextBox;
        if (tb != null) {
            // your code here
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...