创建一个可以编辑60个TextBox名称的循环?

时间:2009-09-17 13:06:18

标签: c# loops

文本框set1 = 1到30 =在查询中 name = br1id to 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 个答案:

答案 0 :(得分:3)

您需要使用控件枚举器。

假设这是WinForms:

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

实际上,我认为这也适用于ASP.Net。 (即使Control位于不同的命名空间中。)

HOWEVER!:这就是为数据网格制作的。

答案 1 :(得分:1)

如果你有600 TextBox个控件,你真的应该重新考虑你的设计。圣牛。

此外,您的SQL非常受SQL injection的约束。

您希望具体的内容无法完成,因为在运行时没有对C#进行动态评估。您需要做的是创建要使用的控件的集合 - 按照您要使用它们的顺序 - 然后枚举此列表以在查询中使用。但是,绝对应该重写此查询以使用参数。

答案 2 :(得分:0)

以下是如何在表单中按名称获取控件:

        // get control by name:
        TextBox tb = this.Controls["textBox1"] as TextBox;
        if (tb != null) {
            // your code here
        }

答案 3 :(得分:0)

对所有以前的答案都是,(600个文本框?600个ID和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);