2011-04-27 42 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); 
    } 
} 

我的問題是,我想在控件添加事件處理程序,但我不能訪問btn_Edit在DetailsView我從代碼隱藏以及製作。

回答

2

您可以初始化您的編輯按鈕,例如在模板的構造和編輯click事件添加到模板:

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); 
     } 
    } 
} 

,然後從後面的代碼中使用它:

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 
} 
相關問題