2009-09-17 44 views
0

文本框SET1 = 1到30 =在查詢 名稱= br1id到br30id創建一個將編輯60個TextBox名稱的循環?

文本框組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]; 
} 
+3

爲什麼在所有這些都是好的和神聖的名稱中,您有600個文本框? – 2009-09-17 13:10:55

+2

我無法檢查,但我希望你的用戶名和密碼不起作用。 – ZippyV 2009-09-17 13:10:59

+0

我沒有600我有60,但問題仍然是相同的,我用600作爲一種方式magnefy問題:P,循環是填充文本框中的數據庫中的值在一個工具im爲統計工作原因,如果我想要,它已經冷到600:P。 並沒有ZippyV ofc的登錄是bougus,但我重新認識了很多腳本小子已經嘗試並且不能等待嘗試從虛假db獲取信息。 – Darkmage 2009-09-17 13:16:55

回答

3

您將要使用控制枚舉器。

假設這是的WinForms:

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

而實際上,我認爲,這將用於ASP.Net工作,太。 (儘管控件位於不同的名稱空間中。)

然而,這是一個數據網格。

+0

是啊,我在想那枚呃擴展我需要走的路徑呀。 – Darkmage 2009-09-17 13:18:59

1

如果您有600 TextBox控件,您應該重新考慮您的設計。天啊。

此外,您的SQL非常受SQL injection

您正在尋找的對象是,因爲在運行時沒有對C#進行動態評估,因此無法完成。你需要做的是創建一個你想要使用的控件的集合 - 按照你想要使用它們的順序 - 然後枚舉這個列表以在你的查詢中使用。但是,該查詢應絕對重寫爲使用參數。

0

下面介紹如何通過名字來獲得控制表內:

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

是對所有以前的答案,(?600名的文本框600 IDS和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

thx將在代碼中更改我的Sql查詢:) – Darkmage 2009-09-17 13:29:08