试图触发一个ASP.NET自定义控件按钮事件
问题描述:
我有一个简单的测试自定义控件,我已经创建并试图找出为什么点击事件不会触发。下面是代码。我简单地试图触发一个ASP.NET自定义控件按钮事件
的Page_Load消耗控制 保护无效的Page_Load(对象发件人,EventArgs的){ Page.Form.Controls.Add(系统testControl新.aspx页面中的创建一个测试页面上的控件的实例()); }
该页面进行回发,但不会在用户控件中选取点击事件。请解释我在做什么错误,或有更好的方式与特定的模式来处理这等
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); ;
}
}
}
感谢你的帮助
答
你必须添加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());
}
,我得到这个
当形式的生命周期要补充控制到集合? – 2011-04-09 13:34:31
当我将控件添加到表单中时,我将它添加到PageLoad中,我也尝试了PreRender,但是这并没有解决问题。 – TampaRich 2011-04-09 14:37:39
你有没有尝试过1)在生命周期的早些时候添加它2)给它一个ID? – 2011-04-10 14:18:00