2009-04-14 49 views

回答

1

您是否嘗試過在ParentControl(例如面板)上使用FindControl(string id)方法來查找它們?

protected void btnDoStuff_click(Object sender, EventArgs args) 
{ 
    TextBox txtBox = (TextBox) pnlDynamicButtons.FindControl("txtBox1"); 
} 
+0

我試過了。但它無法使用FindControl找到文本框 – Roshan 2009-04-14 11:04:23

0

您需要保存對這些文本框的引用,以便您可以在按鈕單擊處理方法內訪問它們。

2

首先,當您添加動態控件時,您必須在每次回發時添加它們。然後,只有當您添加了控件的ID時,纔可以使用Kirschstein所述的FindControl方法找到它。

[編輯] Roshan,你必須在每次回發中動態地添加控件(最好在Init事件中)。爲他們提供一個ID。這將是您每次可以訪問它們的ID。您可以將控件添加到任何容器控件(asp:Panel,具有runat =「server」屬性的div等)。

+0

我該怎麼做? – Roshan 2009-04-14 11:04:54

0

在添加動態控件時,必須在每次回發期間添加它們,例如,通過添加txtbox id到List來保存對它們的引用。

您可以稍後使用該列表來獲取動態創建的文本框並檢索其值。

for (int i = 0; i < listTextBox.Count; i++) 
{ 
    TextBox txt = ((TextBox)(listTextBox[i])); 
} 

如果需要回發之前得到他們的價值觀,在建立它們的添加屬性將它們標記爲動態創建

txtBox.Attributes.Add("isDynamic", "Y"); 

然後回發之前,環通輸入控制得到它們。

var inputControls = document.getElementsByTagName("input"); 
for(var i=0 ; i<inputControls.length ; i++) 
{ 
    if (inputControls[i].getAttribute("isDynamic") == "Y") 
    { 
     ... 
    } 
}