2012-10-31 4 views
0

버튼을 자리 표시 자에 추가하려고합니다. 각 버튼은 동일한 방법으로 이벤트 핸들러가 있습니다.Page_Load에 CSS 및 이벤트 핸들러가있는 버튼 추가

 if (!this.IsPostBack) 
     { 

       foreach (Entry ent in results) 
       { 
        HtmlButton btn = new HtmlButton(); 
        btn.ServerClick += new EventHandler(resultSelected); 
        btn.InnerText = ent.name; 
        btn.ID = ent.ID.ToString(); 
        PlaceHolder1.Controls.Add(btn); 
       } 
     } 

1) 버튼 페이지에 추가하지만 클릭 방법 (resultSelected)가 호출되지 않을 때, 단지 다시를 Page_Load. Page_Load를 입력하면 PlaceHolder가 비어 있습니다 (버튼이 페이지에 표시되지 않음). Ive가 시도한 것을 어떻게 성취합니까?

2) 이렇게 생성 된 버튼에 CSS 클래스를 어떻게 할당합니까?

+0

이 질문을 두 가지 질문으로 나누십시오. 그래서 CSS 부분을위한 새로운 것을 만드십시오. 고맙습니다. –

답변

2

처음으로 ASP.NET 작업을 시작할 때 서버 측에서 동적 컨트롤을 추가하는 것은 매우 일반적인 문제입니다.

  1. 먼저 컨트롤을 추가하고 모든 포스트 백에서 모든 페이지 요청에 이벤트 핸들러를 할당해야합니다. 올바른 이벤트 처리 및 복원을 위해 ViewState에 동일한 ID를 할당하고 동일한 계층 구조를 적용해야합니다.
  2. 페이지로드 이벤트 전에 컨트롤을 추가해야합니다. 가장 편리한 방법은 메서드보다 먼저 Postback에 발생하는 재정의 된 CreateChildControls() 메서드에 추가하는 것입니다.
  3. 이벤트는 OnLoaded 메서드 이후에 발생하므로, 예를 들어 OnPreRender/Render 메서드에서 컨트롤을 만들면 모든 이벤트가 발생하지 않습니다.

이것은 내 설명에서 건너 뛴 일부 세부 사항이있는 가장 간단한 방법입니다. 자세한 내용은 ASP.NET 응용 프로그램 수명주기를 참조하십시오.

질문의 두 번째 부분에 대해서는 Style Property으로 명시 적으로 설정된 스타일을 사용하거나 Attributes Property을 사용하여 클래스 속성을 추가 할 수도 있지만 지금 당장은 HtmlButton이 아니라고 생각합니다. CssClass 속성이 있습니다.

관련 문제