如果标题看起来很荒谬,我提前道歉。在我陷入困境的情况下,我试图了解这两个问题的答案。我在单击按钮时动态创建用户控件,同时跟踪视图状态中的计数。以下是代码:
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 在 Page_Init 上始终设置为 1。我了解到 LoadViewState 在 Page_Init 之后调用,因此我设置的值在 Page_Init 中不可用。我还了解到要在 Page_Init 中添加控件,在此期间构建控件层次结构。请帮助我理解这一点。