Как я получу динамическое управление на странице 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!";
    }

Но в событии нажатия кнопки я не могу найти метку, поэтому я не могу изменить текст этой динамически созданной метки одним щелчком мыши. Я знаю, что допустил ошибку, поэтому, пожалуйста, скажите мне, какую ошибку я совершил и что я должен делать.

заранее спасибо

3 ответа

Решение

Попробуйте найти элемент управления в заполнителе

PH.FindControl("label"); 

Возможно, вы захотите присвоить метке идентификатор, чтобы его было легче найти при его создании.

label.ID = "findme";

затем

PH.FindControl("findme"); 

Вы не дали свой контроль ID при его создании - это ID это что FindContorl использует для того, чтобы найти этот контроль.

Вы также должны ссылаться FindControl на контейнере, в который вы добавили его (PH в твоем случае), как podiluska ответила.

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

Другие вопросы по тегам