C# 以编程方式添加时在占位符中找不到控件
我有一个奇怪的问题,我不太确定如何解决。我试图做的是在单击按钮时从一些控件中获取值。控件位于Web用户控件中,因此我可以根据需要多次加载该控件(每个控件值由我指定的公共属性返回)。然后将它们添加到占位符中。因此,我首先通过单击按钮添加控件:C# 以编程方式添加时在占位符中找不到控件,c#,asp.net,.net,C#,Asp.net,.net,我有一个奇怪的问题,我不太确定如何解决。我试图做的是在单击按钮时从一些控件中获取值。控件位于Web用户控件中,因此我可以根据需要多次加载该控件(每个控件值由我指定的公共属性返回)。然后将它们添加到占位符中。因此,我首先通过单击按钮添加控件: protected void AddControls { MyMyWebUserControl CustInfo = (MyWebUserControl)LoadControl("MyWebUserControl.ascx")
protected void AddControls
{
MyMyWebUserControl CustInfo = (MyWebUserControl)LoadControl("MyWebUserControl.ascx");
for (int c = 0; c <= 10; c++)
{
CustInfo.ID = "CustomCtrl" + c + 1;
myPlaceHolder.Controls.Add(CustInfo);
}
}
myPlaceHolder中的计数始终为0
我尝试添加一些代码来测试页面加载时的回发
if(!(Page.IsPostBack))
{
AddControls();
}
这无法解决。您说“我首先通过单击按钮添加控件”。这使我认为您试图在回发期间添加控件。这是真的吗?这将导致
!(Page.IsPostBack)
以防止调用AddControls。用户可以选择输入所需的控件数量(例如,如果他们想在其策略中添加其他驱动程序)。一旦他们输入了他们想要添加的额外驱动程序的数量,他们就会按下一个按钮,显示那个么多条控制线。希望这有意义?有意义-当按下第一个按钮时调用AddControls()并显示它们,但在按下第二个按钮后,集合返回为空?我想这可能是你的问题:(至少是消失部分)不确定我是否遗漏了什么,但按钮1和2都在标记中。占位符仅包含允许用户输入详细信息的文本框。链接似乎是在看一个动态创建的按钮,我不知道??我明白为什么不完全清楚。在您的例子中,所有的mywebusercontrol
都像文章中的“button2”。
if(!(Page.IsPostBack))
{
AddControls();
}