我是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";
}
运行此应用程序后,我收到以下错误。
&#39; GenerateClickEvent&#39;未定义
我做错了。我尝试宣布像public event EventHandler GenerateClickEvent;
这样的事件,但我无法继续前进。能否告诉我如何实现这一目标。
我也尝试使用.aspx页面中的javascript函数
function GenerateClickEvent() {
alert('clicked');
}
alert('clicked');
没有解雇。
答案 0 :(得分:2)
你可能想要这样的东西你正在做的是客户点击
mycustctrol.searchBtn.OnClientClick = "GenerateClickEvent()"
等事件点击
mycustctrol.searchBtn.Click += new ImageClickEventHandler(GenerateClickEvent_Click);
protected void GenerateClickEvent_Click(object sender, ImageClickEventArgs e)
{
mycustctrol.lblName.Text = "clicked";
}