제목이 불합리한 경우 미리 사과드립니다. 내가 갇혀있는 상황에서 둘 다에 대한 해답을 이해하려고 노력 중입니다. 저는 viewstate에서 카운트를 추적하면서 버튼 클릭에 대해 사용자 정의 컨트롤을 동적으로 생성합니다. 다음은 코드입니다.ViewState에서 포스트 백에 값을 지정하지 않음/페이지 수명주기의 어느 단계에서 사용할 뷰 스테이트가
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);
}
관련 코드 만 공유했습니다. 단추 컨트롤을 클릭하면 성공적으로 추가되지만 한 번만 추가됩니다. 이는 Page_Init에서 CustControlCountID가 항상 1로 설정되기 때문입니다. Page_Init 이후에 LoadViewState가 호출된다는 것을 알았 기 때문에 내가 설정 한 값을 Page_Init에서 사용할 수 없습니다. 또한 컨트롤 계층 구조가 작성되는 동안 Page_Init에 추가 할 컨트롤을 배웠습니다. 이 점을 이해하도록 도와주세요.
'Page_Init' 대신 컨트롤을 추가하기 위해'CreateChildControls' 메서드를 재정의하려 했습니까? –