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