我正在为我的公司工作。我遇到了一个问题。因此,我正在展示我打算做什么以及我无法做什么的例子。
在我的aspx页面中,我有按钮和占位符。 e.g。
<asp:Button ID = "brnClickme" runat = "server" Text = "Click Me"onclick="brnClickme_Click" />
<asp:PlaceHolder ID = "PH" runat = "server"></asp:PlaceHolder>
在我的aspc.cs文件中我有一个动态控件,比如说一个Label会在单击Button后改变它的值
所以我写了这样的代码
protected void Page_Init(object sender, EventArgs e)
{
Label label = new Label();
label.Text = "I am in the Place holder";
PH.Controls.Add(label);
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void brnClickme_Click(object sender, EventArgs e)
{
Label label = (Label)FindControl("label");
label.Text = "After Click I am changed!";
}
但是在Button click事件中,我找不到Label,所以我无法通过单击更改此动态创建的标签的文本。我知道我犯了一个错误,所以请告诉我我犯了什么错误以及我想做什么。
提前致谢
答案 0 :(得分:3)
尝试在占位符中找到控件
PH.FindControl("label");
您可能希望为标签指定一个ID,以便在创建时更容易找到。
label.ID = "findme";
然后
PH.FindControl("findme");
答案 1 :(得分:2)
创建时你没有给{/ 1}} ID
ID
FindContorl
是FindControl
用来找到该控件的。{/ p>
您还应该将您添加到的容器PH
调用protected void Page_Init(object sender, EventArgs e)
{
Label label = new Label();
label.ID = "myLabel";
label.Text = "I am in the Place holder";
PH.Controls.Add(label);
}
protected void brnClickme_Click(object sender, EventArgs e)
{
Label label = (Label)PH.FindControl("myLabel");
label.Text = "After Click I am changed!";
}
(例如{{1}}},podiluska answered。
{{1}}
答案 2 :(得分:0)
您必须像已经完成的那样在INIT中重新创建动态控件。当您在按钮中搜索LABEL时,请点击尝试拨打templateFormPlaceholder.FindControl
。
阅读本文。它可能会有所帮助Get text from dynamically created textbox in asp.net