2009-04-14 37 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") 
    { 
     ... 
    } 
}