2011-04-27 2 views
1

나는 코드에서 가지고있는 DetailsView에 컨트롤을 추가하기위한 템플릿을 만들었습니다.ITemplate를 상속 한 clss에서 이벤트 처리기를 추가하는 방법

private class edgFooterTemplate : ITemplate 
{ 
    private Button btn_Edit; 

    public void InstantiateIn(Control container) 
    { 
     btn_Edit = new Button(); 
     btn_Edit.CausesValidation = false; 
     btn_Edit.CommandName = "Edit"; 
     btn_Edit.ID = "btn_Edit"; 
     btn_Edit.Text = "Edit"; 
     container.Controls.Add(btn_Edit); 
    } 
} 

내 문제는 내가 컨트롤에 이벤트 처리기를 추가 할 것입니다하지만 난 내가 코드 숨김뿐만 아니라 만든 위해 DetailsView에 btn_Edit에 액세스 할 수 없습니다.

답변

2

예를 들어 수정 버튼을 초기화 할 수 있습니다. 마지막으로, 이벤트 핸들러

protected void Page_Init(object sender, EventArgs e) 
{ 
    var footerTemplate = new edgFooterTemplate(); 
    footerTemplate.EditClick += new EventHandler(footerTemplate_EditClick); 
    viewItems.FooterTemplate = footerTemplate; 
} 

과 :

protected void footerTemplate_EditClick(object sender, EventArgs e) 
{ 
    // some logic here 
} 

private class edgFooterTemplate : ITemplate 
{ 
    private Button btn_Edit; 

    public edgFooterTemplate() 
    { 
     btn_Edit = new Button(); 
     btn_Edit.CausesValidation = false; 
     btn_Edit.CommandName = "Edit"; 
     btn_Edit.ID = "btn_Edit"; 
     btn_Edit.Text = "Edit"; 
    } 

    public event EventHandler EditClick 
    { 
     add { this.btn_Edit.Click += value; } 
     remove { this.btn_Edit.Click -= value; } 
    } 

    public void InstantiateIn(Control container) 
    { 
     if (container != null) 
     { 
      container.Controls.Add(btn_Edit); 
     } 
    } 
} 

을하고 뒤에 코드에서 사용 : 및 템플릿 생성자에서 템플릿에 편집 클릭 이벤트를 추가

관련 문제