2012-05-09 97 views
2

首先,我實際上是DBA,而不是Web開發人員,所以......我寫的內容可能看起來很醜陋。我正在建立一個網站(他們問我是否會嘗試/聳聳肩),而且我有168個複選框在檢查時具有相同的操作。但是,這些操作(雖然相同)在不同的控件上執行(與複選框有關)。我可以做類似下面的事情,而不是168條件的switch語句嗎?基於變量動態創建控件

CheckBox myCB = (CheckBox)(sender); 

String mySTR = myCB.ID.ToString(); 
String myGVstr = 「gv」 + mySTR.Substring(mySTR.IndexOf(‘cb’) + 1); 
String myBTNstr = 「btn」 + mySTR.Substring(mySTR.IndexOf(‘cb’) + 1); 

GridView myGV = myGVstr; 
Button myBTN = myBTNstr; 

// Do what I need to do with these controls 
... 

回答

1

這似乎並不是一個合理的事情。也許在加載時,你可以把所有的控件放到一個大數組中?需要花費大量代碼將每個控件放入數組中,但之後可以以類似(更可靠)的方式訪問它們。

如果你堅持這樣做,'FindControl'方法可能有些用處。

http://msdn.microsoft.com/en-us/library/486wc64h.aspx

喜歡的東西...

GridView myGV = (GridView)FindControl(myGVstr) 

沒有測試,但可能工作。

+0

也可以考慮使用複選框(或複選框ID)作爲關鍵字的字典。 – Servy

+0

合理還是可能?自從我寫這本書以來,我用了一個非常嚴格的命名「標準」,所以我不擔心你是否應該這樣做。 – Grixxly

+0

我一直沒有能夠得到它的工作。我甚至硬編碼了我試圖抓住的GridView,myGV仍然爲空。嘗試將FindControl更改爲'(GridView)this.Page.FindControl(「gvA1」);'並且仍然沒有骰子......希望這可以工作,必須編碼相同的29行168次,其中只有控件名稱會改變發臭... – Grixxly