【发布时间】: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 而不是在我的机器上运行相同的代码感到茫然。