ASP.NET web窗体中如何给一个Label控件添加单击事件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
namespace CustomControls
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:ClickLabel runat=server></{0}:ClickLabel>")]
public class ClickLabel : WebControl, IPostBackEventHandler
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? "[" + this.ID + "]" : s);
}
set
{
ViewState["Text"] = value;
}
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write(Text);
}
public event EventHandler Click;
public ClickLabel()
{
}
protected void OnClick()
{
if (Click != null)
{
Click(this, new EventArgs());
}
}
//When postback is caused by this control, raise the event
void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)
{
OnClick();
}
//Add onclick attribute to cause a postback when Label is clicked
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
base.AddAttributesToRender(writer);
writer.AddAttribute(HtmlTextWriterAttribute.Onclick, Page.ClientScript.GetPostBackEventReference(this, "OnClick"));
}
}
}
我帮你写个,将以上代码编译成一个.DLL文件,就有一个带有单击事件的Label控件了
编译方法:
打开studio 随便新建一个项目,注意是项目,就会自动生成一个Default.aspx,和Default.aspx.cs两个文件,将以上代码复盖Default.aspx.cs的代码,然后可以点击项目菜单栏属性,可以修改程序集名和命名空间的名字例如:之后点击生成下的生成选择就会在你的BIN文件里生成一个dll
将它复制到你项目文件里就可以引用了
<%@ Register Assembly="ClickLabel" Namespace="CustomControls" TagPrefix="fa" %>
调用控件
<fa:ClickLabel Font-Size="15px" ID="ClickLabel5" OnClick="label_Click" runat="server" Text="确 定" />
后台代码
public void label_Click(object sender, EventArgs e)
{
}
调用JS方法的如下
有两种方法:
一、在前台:<asp:Label runat="server" ID="Label1" Text="Label1" onclick="你的JS方法"></asp:Label>
二、在后台:Label1.Attributes.Add("onclick","你的JS方法");这个要加在Page_Load里哦
Label不能像按钮一样双击后有一个自己的单击方法,如果你是要单击Label后调用后台的方法你可以这样:
首先,你写一个后台的方法,这个方法一定要是public的,给你个例子吧!简单的:
后的方法:
public string showNum()
{
return "123";
}
JS方法:
function show()
{
alert('<%=showNum() %>')
}
然后给Label加个onclick事件就可以啦,这样<asp:Label ID="Label1" runat="server" Text="Label" onclick="show();"></asp:Label>
lbT.Attributes.Add("onclick","display()");
前台
<script type="text/javascript">
function display() {
alert('你好,这是Label点击事件');
}
</script>
<asp:Label runat="server" ID="lbT" Text="Label点击事件"></asp:Label>
onclick="javascript:alert(1)"; 测试下