Позвольте мне начать с указания на, это не простой вопрос, чтобы ответить. По крайней мере, это почти невозможно найти ответ.
В UpdatePanel я динамически добавляю некоторые элементы управления в мой элемент управления панели.
List<Showing> showings = cBLL.GetShowings(tenant.Id);
int j = 1;
foreach(Showing showing in showings)
{
UserControl uc = (UserControl)Page.LoadControl("Controls/BookShowing.ascx");
uc.ID = "showing_" + j;
uc.Visible = true;
((BookShowing)uc).SetShowing(showing);
pnl_showings.Controls.Add(uc);
j++;
}
Все это происходит в событии кнопки, запущенном из управляющего асихрона.
Ниже этих полей я добавляю код, показанный выше, у меня есть кнопка. Кнопка также находится в панели обновления. Эта кнопка называется: btn_editShowings
Теперь, когда я перехожу к обработчику событий btn_editShowings_Click, мои добавленные динамические элементы управления больше не существуют. Я также пытался поймать их в OnInit, но их там тоже нет.
Как F ... возможно ли когда-либо получить данные из динамически добавленных элементов управления ???
Есть ли в любом случае, и мне все равно, насколько паршиво это работает или что-то еще, чтобы решить это?
UPDATE
Теперь я попытался сделать следующее, которое должно работать при запуске Init до LoadViewState из того, что я прочитал.
Я добавляю некоторые элементы управления динамически в событие Button
protected void Button2_Click(object sender, EventArgs e)
{
for (int i = j; i < showno + 4; i++)
{
UserControl uc = (UserControl)Page.LoadControl("Controls/BookShowing.ascx");
uc.ID = "showing_" + i;
uc.Attributes.Add("runat", "Server");
uc.EnableViewState = true;
uc.Visible = true;
pnl_showings.Controls.Add(uc);
}
UpdatePanel1.Update();
}
И я сделал то же самое в своей функции инициализации:
защищенное переопределение void OnInit (EventArgs e)
{
base.OnInit (е);
if (Session["ShowingsCount"] != null)
{
int noOfUCs = (int)Session["ShowingsCount"];
for (int i = 1; i < noOfUCs; i++)
{
UserControl uc = (UserControl)Page.LoadControl("Controls/BookShowing.ascx");
uc.ID = "showing_" + i;
uc.Attributes.Add("runat", "Server");
uc.EnableViewState = true;
uc.Visible = true;
pnl_showings.Controls.Add(uc);
}
UpdatePanel1.Update();
}
}
Но когда я попробую это:
FindControl("showing_1").Visible = false;
Я получил исключение нулевой ссылки.
С наилучшими пожеланиями
Настоящий Напстер, встревоженный еще раз.