현재 C# 및 asp.net을 사용하는 웹 사이트에서 작업하고 있습니다. 이를 위해 동적 컨트롤을 만들어야하지만 몇 가지 문제가 있습니다. 나는 이미 공식 문서를 읽고 튜토리얼을 많이 찾았지만 불행히도 아무도이 문제를 해결할 수 없었다.동적 인 C# asp.net 컨트롤 문제 해결
다음은 내가 수행하려고 시도하는 매우 단순한 예입니다.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
CreateControls();
else
UpdatePage();
}
protected void CreateControls()
{
Button button1 = new Button();
button1.ID = "_Button1";
button1.Text = "Button1";
button1.Click += new System.EventHandler(_ClickEvent);
_Panel.Controls.Add(button1);
Button button2 = new Button();
button2.ID = "_Button2";
button2.Text = "Button2";
button2.Click += new System.EventHandler(_ClickEvent);
_Panel.Controls.Add(button2);
}
protected void UpdatePage()
{
Button button1 = ((Button)_Panel.FindControl("_Button1"));
button1.Text = "I went through UpdatePage and changed";
Button button2 = ((Button)_Panel.FindControl("_Button2"));
button1.Text = "I went through UpdatePage and changed";
}
protected void _ClickEvent(object sender, EventArgs e)
{
}
여기서 목표 중 하나를 클릭하면 버튼의 텍스트가 변경됩니다. "Page_Load"메서드는 "UpdatePage"메서드와 마찬가지로 올바르게 호출되지만 후자에서는 Button1 및 Button2 컨트롤이 사라지고 (패널 컨트롤에 더 이상 포함되지 않음) NullPointer 예외가 분명히 제기됩니다.
아무도 설명이 없습니까? 페이지 수명주기에 대해 뭔가 빠뜨린 것 같지만 어디서나 명확한 해결책을 찾을 수 없었습니다.
고맙습니다.
모든 포스트 백마다 동적으로 생성 된 모든 컨트롤을 다시 만들어야합니다. [진정한 다이나믹 컨트롤 이해하기] (http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx) –
영어가 모국어가 아닌 사람에게는 읽기가 어렵지만 정말 완료되었습니다! 불행히도 실제로 컨트롤을 만들고 업데이트하는 Page_Load 메서드를 사용하는 방법에 대한 설명을 찾을 수 없습니다. 나는 관련 단락을 놓쳤습니까? –