如何在aspx页面中获得动态控件



我正在为我的公司做一个项目。在那里我遇到了一个问题。因此,我展示了一个我打算做什么和不能做什么的例子

在我的aspx页面中,我有按钮和占位符。例如

 <asp:Button ID = "brnClickme" runat = "server" Text = "Click Me"onclick="brnClickme_Click" />
  <asp:PlaceHolder ID = "PH" runat = "server"></asp:PlaceHolder>

在我的aspc.cs文件中,我有一个动态控件,比如一个标签,它将在点击按钮后更改其值

所以我写了这样的代码

    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!";
    }

但是在按钮点击事件中,我找不到标签,所以我无法通过点击来更改这个动态创建的标签的文本。我知道我犯了一个错误,所以请告诉我我犯了什么错误,我该怎么办

提前感谢

尝试在占位符中查找控件

PH.FindControl("label"); 

你可能想给标签一个ID,这样在创建标签时更容易找到

label.ID = "findme";

然后

PH.FindControl("findme"); 

创建控件时,您没有给控件一个ID-这个IDFindContorl用来查找该控件的。

您还应该在添加到的容器上调用FindControl(在您的案例中为PH),正如podilska所回答的那样。

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!";
}

您必须像已经做的那样在INIT中重新创建动态控件。当您在按钮中搜索LABEL时,单击尝试调用templateFormPlaceholder.FindControl

读这个。它可能有助于从asp.net 中动态创建的文本框中获取文本

相关内容

  • 没有找到相关文章

最新更新