2008-09-18 50 views
0

我有幾個用戶控件,比如說AB,CD。基於一些隨機輸入,我需要生成這些的組合。對於例如如果輸入是2a3d1a2c我需要顯示A中的兩個,之後的三個D,再次顯示一個A等。如何動態生成ASP.NET用戶控件的組合?

我還需要穩定clientid以使它們正常工作。因爲每個控件都使用自己的ClientID屬性來收集自己的輸入。對於例如用戶控制A在內部生成名爲this.ClientID + "$input1"的輸入,並從Request[this.ClientID + "$input1"]等請求收集輸入。由於可以有多個A,每個A在回發後需要具有相同的(unique) ClientID以便從請求中獲得正確的輸入。

+0

我對這個問題感到困惑。通過設計,回傳時控件樹必須與頁面呈現時相同。是否有一個原因,您不能每次都在Page.Init中簡單創建控件?框架生成的ClientID將是相同的。 – 2008-10-14 13:40:50

回答

0

動態地添加控件,您可以使用面板作爲一個佔位符,說

<asp:Panel ID="ControlPlaceholder" runat="server" /> 

然後,在服務器端,你可以像這樣將對象添加到它:

int controlCount = 0; 

... 

TextBox newTextBox = TextBox(); 
newTextBox.ID = "ctl_" + controlCount++; 
ControlPlaceholder.Controls.Add(newTextBox); 

如果在Page_Load事件中添加控件並使用生成控件ID的一致方法(例如上面的簡單計數),則任何視圖狀態或事件綁定將在回發中重新綁定到正確的對象。

+0

如果有問題,它來自通過反序列化文件生成的類的屬性(我會嘗試解決方案以查看它是否有幫助。 – 2008-09-18 08:35:53