2014-09-03 3 views
0

HtmlGenericControl()을 사용하여 WebForms 페이지에 일부 HTML 콘텐트를 동적으로 빌드하고 있습니다.동적 콘텐트의 포스트 백

HtmlGenericControl p = new HtmlGenericControl("p"); 
// ... 
ListItems.Controls.Add(p); 

하지만 이제는 위에서 만든 단락에 단추를 추가해야하며 단추를 클릭하면 다시 게시해야합니다.

실제 서버 측 버튼을 포함 할 수있는 하위 컨트롤을로드하려면이 코드를 완전히 수정해야합니까? 아니면 어떤 유형의 포스트 백이 가능한 버튼을 삽입하는 방법이 있습니까?

답변

1

다음은 테스트 메소드이고 테스트 이벤트 핸들러는 호출되면 ListBox에 서버 측 Click 이벤트가있는 버튼 컨트롤을 추가합니다. 주석 처리 된 코드는 InnerHtml을 사용할 수있는 경우 ListItems 객체의 마크 업을 변경하지만 해당 접근법을 다시 생각하고 클릭 이벤트 발생의 결과를 표시하는 텍스트 상자가 페이지에 있다고 가정합니다. 예를 들어 페이지가로드 될 때마다 Test()가 호출되지 않는 경우와 같이 자식 컨트롤이 한 포스트 백에서 다른 포스트 백까지 존재해야하는 경우 처리해야 할 여러 가지 우려 사항이 있습니다. 다른 컨트롤에서도 호출하지 않으면 EventHandler를 호출 할 방법이 없습니다.

 public void Test() 
    { 
     System.Web.UI.HtmlControls.HtmlGenericControl p = new System.Web.UI.HtmlControls.HtmlGenericControl("p"); 
     p.InnerHtml = @"<strong>Test</strong>"; 
     // ... 
     ListItems.Controls.Add(p); 
     Button b = new Button(); 
     b.ID = "cmdTest"; 
     b.Text = "Test"; 
     b.Click += new EventHandler(test_Click); 
     p.Controls.Add(b); 
    } 

    protected void test_Click(object sender, EventArgs e) 
    { 
     // ListItems.InnerHtml = "Test button clicked"; 
     txtTestResults.Text = "Test button clicked at " + DateTime.Now.ToShortTimeString(); 
    }