有没有办法将onclick事件添加到ASP.NET Label服务器控件?
我想要做这样的事情:有没有办法将onclick事件添加到ASP.NET Label服务器控件?
<asp:Label ID="lblMyLabel" onclick="lblMyLabel_Click" runat="server">My Label</asp:Label>
我知道在Javascript中我能做:
<span onclick="foo();">My Label</span>
所以我不知道为什么我不能这样做与标签对象。
您可以使用属性添加onclick客户端回调。
我不知道,你可以在span标签做到这一点,但如果它的工作原理,你可以通过lblMyLabel.Attributes.Add("onclick", "foo();");
但foo();
添加的“onClick”将需要一个客户端的JavaScript功能。
System.Web.UI.WebControls.Label
没有OnClick服务器事件。如果您希望使用上面的示例进行服务器回调,您可以考虑使用AJAX。
你也可以像其他人那样使用LinkButton
。如果它只是你强调的下划线,你可以使它看起来不像使用CSS的链接。
ASPX:
<asp:LinkButton ID="LinkButton1" runat="server"
CssClass="imjusttext" OnClick="LinkButton1_Click">
LinkButton
</asp:LinkButton>
CSS:
a.imjusttext{ color: #000000; text-decoration: none; }
a.imjusttext:hover { text-decoration: none; }
你可以做到这一点在在Page_Load如代码:
void Page_Load(object sender, EventArgs e)
{
lblMyLabel.Attributes.Add("onclick",
"javascript:alert('ALERT ALERT!!!')");
}
我觉得还可以,但它是一个客户端 - 侧onclick处理程序,而不是服务器端。它会抱怨没有被支持的属性(或一些这样的),但我认为它正确渲染。如果你想要一个服务器端处理程序,我认为你需要做一个LinkButton。
据我所知,这是不可能的。标签控件在服务器端发出“不可点击”的元素<span
>。您需要用LinkButton替换您的Label控件。
如果你想要一个onclick事件,你为什么不使用一个LinkButton,它具有onclientclick
事件:
<asp:linkbutton id="lblMyLink" onclientclick="lblMyLink_Click" runat="server">My Label</asp:linkbutton>
您可以使用CSS,使链接看起来像任何你想要
你的问题并没有说明你是否想要在服务器(VB或c#)或客户端(javascript)上引发点击事件。如果你正在寻找一个服务器端事件,你应该使用一个带有CSS的链接按钮该链接显示为标签。然后,您可以使用链接按钮的服务器端单击事件。如果您正在查找客户端单击事件 - 只需将其键入到您的服务器控件标记中asp:label id="MyLabel" runat="server" onclick="javascript:alert('hello');" Text="Click Me";
ASP.NET将在生成的html标记中发出其他属性。
另一个黑客可能会使用隐藏的链接或按钮,其style =“display:none;”并从span中的javascript函数触发对服务器控件的点击。
事情是这样的:
<asp:linkbutton id="lblMyLink" onClick="lblMyLink_Click" runat="server" style="display:none;">My Link</asp:linkbutton>
<span onclick="document.getElementById('lblMyLink').click();">My Label</span>
你总是可以推出自己的控制其产生的跨度,与.NET的标准回传的JavaScript,但使用了CSS类的LinkLabel会更容易如前所述
只是在这个问题上, 我在.aspx页面中使用了一个标签,只有在DataList项目模板中可见时,如果数据集中存在子记录。
我加入的onclick函数到标签:
moreOptionsLabel.Attributes.Add( “点击”,的String.Format( “toggle_visibility( '{0}')”,div.ClientID));
在我的.cs文件中。它现在将控制.aspx页面中的div标记以显示或隐藏记录 - 因为onclick指向客户端JavaScript函数。注意div.ClientID,这使得这在datalist中可行。
如上所述 - 跨度标签确实通过“onclick”变成了功能。并且由于标签控件在页面请求后呈现为一个跨度,因此使用Addtribute.Add(“onclick”....确实有效。
结果是显示/隐藏数据的功能,无需执行回发。如果您使用LinkButton或simlar控件 - 回发和页面重新加载是不可避免的 - 除非您想进入一些Ajax内容
注意:span标记不会看起来可点击,除非您使用下划线手形光标。
感谢这个想法来自威尔Asrari了在http://www.willasrari.com/blog/display-nested-repeaters-and-gridviews-asynchronously/000292.aspx
呦你需要创建一个继承自标签和onclick事件处理程序的类对象,该处理程序将由yourslef作为一种方法,并将您的对象用作自定义标签。
我不希望它看起来像一个链接,我不想破解链接看起来像使用CSS的纯文本,但我想这就是我必须做的。 :(谢谢,虽然。 – fuentesjr 2008-10-08 02:03:23