Добрый день.
У меня есть список панелей, которые динамически создаются в Page_Load. Элементы управления добавляются через Control.Add (p); метод. Код следует
Panel p = new Panel();
p.ID = "cell_" + i + "_" + j;
p.Attributes.Add("runat", "server");
p.TabIndex = -1;
p.Attributes.Add("class", "box");
p.Attributes.Add("onClick", "clicked(this);");
p.Attributes.Add("onKeypress", "changeValue(event, this);");
p.Style.Add(HtmlTextWriterStyle.Top, top + "%");
p.Style.Add(HtmlTextWriterStyle.Left, left + "%");
p.Attributes.Add("Text", value);
PanelList.Add(p);
этот блок кода находится в цикле for, а переменные i, j, left, right и value изменяются в каждом цикле.
Теперь, когда я вызываю эту функцию ДО завершения Page_Load:
foreach (Control c in clientGrid.Controls)
{
Response.Write(c.ClientID.ToString());
}
Он успешно записывает все идентификаторы клиентов всех динамически создаваемых панелей.
Однако, когда я запускаю функцию foreach при обратной передаче, Response.write ничего не отображает. Как будто жерех забыл, что эти панели существуют!
Теперь я слышу, что в Page_Init () элементы управления должны быть перерисованы!
Я не уверен, Как это сделать, и после многих поисков Google, кажется, не может найти ответ.
Я пытался использовать рекурсию, чтобы перебрать все Page.Controls и вытащить
System.Web.UI.WebControls.Panel
Но все равно не повезло: (
Если мой вопрос неясен, я не могу предоставить больше кода и деталей:)
Thankyou
Alex