【发布时间】:2012-12-04 05:30:18
【问题描述】:
我是 asp.net 中自定义控件的新手。我在为图像按钮附加点击事件处理程序时遇到了困难。我为服务器控制编写了以下代码。
ImageButton _imgbtn;
TextBox txtOutput;
Label _lblname;
public ImageButton searchBtn
{
get { return _imgbtn; }
set { _imgbtn = value; }
}
public Label lblName
{
get { return _lblname; }
set { _lblname = value; }
}
protected override void OnInit(EventArgs e)
{
txtOutput = new TextBox();
txtOutput.Width = 180;
txtOutput.ID = "ResultOutput";
txtOutput.Enabled = false;
Controls.Add(txtOutput);
searchBtn = new ImageButton();
Controls.Add(searchBtn);
lblName = new Label();
lblName.Text = "";
Controls.Add(lblName);
}
protected override void RenderContents(HtmlTextWriter output)
{
//base.Render(output);
txtOutput.RenderControl(output);
searchBtn.RenderControl(output);
lblName.RenderControl(output);
}
我将此自定义控件添加到带有注册标记的.aspx页面中,如下所示。
<%@ Register TagPrefix="mycontrol" Namespace="MyControl" Assembly="MyControl" %>
在 aspx.cs 文件中,我给出的属性值如下,
CustomControl mycustctrol;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
mycustctrol = myCust as CustomControl;
mycustctrol.searchBtn.ImageUrl = "~/Images/searchicon.png";
mycustctrol.searchBtn.OnClientClick = "GenerateClickEvent"
}
}
public void GenerateClickEvent(object sender, EventArgs args)
{
mycustctrol.lblName.Text = "clicked";
}
运行此应用程序后,我收到以下错误。
'GenerateClickEvent' 未定义
我在哪里做错了。我尝试声明像public event EventHandler GenerateClickEvent; 这样的事件,但我无法更进一步。你能告诉我如何实现这一目标吗?
我也试过用 .aspx 页面中的 javascript 函数作为
function GenerateClickEvent() {
alert('clicked');
}
alert('clicked'); 没有触发。
【问题讨论】:
-
GenerateClickEvent 你为此定义了jacascript吗
-
是的。查看我编辑的问题一次
标签: c# asp.net custom-controls