【问题标题】:Trying to Fire a ASP.NET Custom Control Button Event尝试触发 ASP.NET 自定义控制按钮事件
【发布时间】:2011-08-02 02:15:15
【问题描述】:

我创建了一个简单的测试自定义控件,并试图弄清楚为什么单击事件不会触发。下面是代码。我只是在测试页面上创建了一个控件实例

使用控件的 .aspx 页面的 Page_Load protected void Page_Load(object sender, EventArgs e) { Page.Form.Controls.Add(new TestControl()); }

页面执行回发,但它不接收用户控件中的点击事件。请解释我做错了什么,或者用特定模式等更好的方法来解决这个问题。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI;

namespace WorldOfTest
{

公共类 TestControl : WebControl { 私人按钮 btn;

    protected override void OnInit(EventArgs e)
    {            
        base.OnInit(e);
    }

    protected override void EnsureChildControls()
    {
        btn = new Button();           
        this.Controls.Add(btn); 
        base.EnsureChildControls();
    }

    protected override void CreateChildControls()
    {

        btn.Click += new EventHandler(btn_Click);  
        btn.Text = "test button";                         
        base.CreateChildControls();
    }

    void btn_Click(object sender, EventArgs e)
    {
        throw new NotImplementedException();
    }

    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
        btn.RenderControl(writer); ;
    }

}
}

感谢您的帮助

【问题讨论】:

  • 在表单的生命周期中,您何时将控件添加到集合中?
  • 当我将控件添加到我在 PageLoad 中添加它的表单时,我也尝试了 PreRender,但这并没有解决问题。
  • 您是否尝试过 1) 在生命周期的早期添加它 2) 给它一个 ID?
  • Jason,我已经尝试在生命周期的早期添加它,有一个没有 ID 的 ID。我现在对如何在 BalaR 而不是在我的机器上运行相同的代码感到茫然。

标签: asp.net events controls


【解决方案1】:

您必须像这样将您的btn 添加到Controls 集合

    protected override void EnsureChildControls()
    {
        this.btn = new Button();   
        Controls.Add(btn);         
        base.EnsureChildControls();
    }

编辑:

一旦我将按钮添加到控件的集合中,对我来说似乎工作正常。

我试过了

    protected void Page_Load(object sender, EventArgs e)
    {
        Page.Form.Controls.Add(new Tester());
    }

我明白了

【讨论】:

  • 我将它添加到 EnsureChildControls 的集合中。事件仍未触发。
  • 我必须遗漏一些东西,我做了你所做的,行为仍然像页面刷新一样。我根据您在原始评论中的建议添加了我的新代码。你能发布你的控制代码吗?
  • 对于控件,我有您在问题中的确切内容以及我的答案中的一行,以将 btn 添加到控件集合。
  • 还是不行。 webconfig 中是否有任何我可能遗漏的设置?
  • Bala R. 感谢您的帮助,我终于把它连线并按预期工作了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-12
  • 1970-01-01
  • 2023-01-03
  • 2020-03-05
  • 2013-07-02
  • 2016-08-02
相关资源
最近更新 更多