Заранее извиняюсь, если название покажется абсурдным. Я пытаюсь понять ответ на оба вопроса в ситуации, в которой я застрял. Я динамически создаю пользовательские элементы управления по нажатию кнопки, отслеживая количество в состоянии просмотра. Ниже приведен код:
private int custControlCountID;
public int CustControlCountID
{
get
{
return (int)(ViewState["CustControlCountID"] == null? 1 : ViewState["CustControlCountID"]);
}
set
{
ViewState["CustControlCountID"] = value;
}
}
protected void Page_Init(object sender, EventArgs e)
{
for (int i = 0; i < CustControlCountID; i++)
{
RejRow customControl = (RejRow )LoadControl("~/RejRow .ascx");
customControl.ID = "rejRow" + i;
divHolder.Controls.Add(customControl);
}
}
protected void btnNewRow_Click(object sender, EventArgs e)
{
CustControlCountID = CustControlCountID + 1;
RejRow customControl = (RejRow)LoadControl("~/RejRow.ascx");
customControl.ID = "rejectRow" + CustControlCountID;
divHolder.Controls.Add(customControl);
}
Я поделился только соответствующим кодом. При нажатии кнопки элемент управления добавляется успешно, но только один раз. Это связано с тем, что CustControlCountID всегда имеет значение 1 в Page_Init. Я узнал, что LoadViewState вызывается после Page_Init, поэтому значение, которое я устанавливаю, недоступно в Page_Init. Я также узнал, что элементы управления добавляются в Page_Init, во время которого строится иерархия элементов управления. Пожалуйста, помогите мне понять это.
CreateChildControls
для добавления элементов управления вместоPage_Init
? - person Mt. Schneiders   schedule 25.02.2013