2012-10-16 17 views
2

我正在編寫一個C#/ ASP.Net Web應用程序,並且我有大量需要在後面的代碼中設置爲變量值的文本框。目前,我做了以下內容:C#中的控制數組類型循環/ ASP.NET

AspTextBox0.Text = codeBehindVariable[0]; 
AspTextBox1.Text = codeBehindVariable[1]; 
AspTextBox2.Text = codeBehindVariable[2]; 
AspTextBox3.Text = codeBehindVariable[3]; 
… 

有一種簡單的方法來「for」循環做一個簡單的?

這是一個非常簡單的例子,真正的程序有一個switch case和一些其他的測試,需要在變量賦值時執行。因此,「for」循環將極大地簡化代碼的編寫和可維護性。回到VB6和控制陣列的古老時代,這是一塊蛋糕。

+2

類似的帖子:http://stackoverflow.com/questions/ 12150008/add-textbox-text-to-a-list-using-a-for-loop/12150177#12150177 - 你有數組在右邊,鏈接有左邊的數組 –

回答

-1

你可以做這樣的事情...

int i = 0; 
    foreach (Control ctrl in this.Controls) 
    { 
     if (ctrl is TextBox) 
     { 
      TextBox tempTextBox = (TextBox)ctrl; 
      tempTextBox.Text = codeBehindVariable[i]; 
      i++; 
     } 
    } 
+0

你仍然需要檢查控件的名稱,如果它是一個TextBox,看它是否是AspTextBox0,AspTextBox1等...你不應該依賴控件中的控制順序 –

6

好老VB6的日子已經一去不復返了,更好不回來。

創建控件數組或更好的List<TextBox>自己:

var textBoxes = new List<TextBox> { 
    AspTextBox0, 
    AspTextBox1, 
    // ... 
}; 

然後Zip它與codeBehindVariable

textBoxes.Zip(codeBehindVariable, 
       (textBox, variable) => textBox.Text = variable); 

或者,如果你喜歡一個for循環:

for (int i = 0; i < codeBehindVariable.Length; i++) 
{ 
    textBoxes[i].Text = codeBehindVariable[i]; 
} 

請記住,在for循環中,您必須確保textBoxescodeBehindVariable的項目數量相同(或使循環僅在最短的項目數量上運行)。 Zip函數將自行處理。

1

假設你是在一個類中實現System.Web.UI.Page你可以嘗試查找控制找到你想要像這樣的一個:

for (int i = 0; i <= codeBehindVariable.Length; i++) 
{ 
    var textBox = FindControl("AspTextBox" + i, false); 
    if(textBox != null) 
    { 
    textBox.Text = codeBehindVariable[i]; 
    } 
}