Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何向clss继承ITemplate中的控件添加事件处理程序_C#_Asp.net_Itemplate - Fatal编程技术网

C# 如何向clss继承ITemplate中的控件添加事件处理程序

C# 如何向clss继承ITemplate中的控件添加事件处理程序,c#,asp.net,itemplate,C#,Asp.net,Itemplate,我已经制作了一个模板,用于将控件添加到我从代码隐藏获得的DetailsView中 private class edgFooterTemplate : ITemplate { private Button btn_Edit; public void InstantiateIn(Control container) { btn_Edit = new Button(); btn_Edit.CausesValidation = false;

我已经制作了一个模板,用于将控件添加到我从代码隐藏获得的DetailsView中

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。

您可以初始化编辑按钮,例如在模板构造函数中,并向模板添加编辑单击事件:

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
}