我想做这样的事情:
<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();");
添加"onclick"
但是foo();
需要是一个客户端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; }
您的问题没有指定您是打算在服务器(VB或C#)还是客户端(javascript)上引发单击事件。如果您正在寻找服务器端事件,则应使用带有 css 的链接按钮,使链接显示为标签。然后,您可以使用链接按钮的服务器端单击事件。如果要查找客户端单击事件 - 只需将其键入服务器控件标记asp:label id="MyLabel" runat="server" onclick="javascript:alert('hello');" Text="Click Me";
ASP.NET
将在生成的 html 标记
中发出其他属性。
page_load的代码中执行此操作,例如:
void Page_Load(object sender, EventArgs e)
{
lblMyLabel.Attributes.Add("onclick",
"javascript:alert('ALERT ALERT!!!')");
}
如果你想要一个onclick事件,为什么不使用链接按钮,它有onclientclick
事件:
<asp:linkbutton id="lblMyLink" onclientclick="lblMyLink_Click" runat="server">My Label</asp:linkbutton>
您可以使用CSS使链接看起来像您想要的任何
你可以,但它是客户端点击处理程序,而不是服务器端。 它会抱怨该属性不受支持(或某些类似),但我认为它呈现正确。 如果你想使用服务器端处理程序,我认为你需要做一个 LinkButton。
据我所知,这是不可能的。标签控件发出<span
>在服务器端"不可单击"的元素。您需要将标签控件替换为链接按钮。
另一个技巧是使用带有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类的链接标签会更容易
只是为了解决这个问题,我在 .aspx 页中使用了一个标签,该标签仅在数据集中有子记录时在我的 DataList 项模板中可见。
我在标签中添加了一个点击功能:
moreOptionsLabel.Attributes.Add("onclick", string.Format("toggle_visibility('{0}')",div.ClientID));
在我的.cs文件中。它现在将控制.aspx页面中的div 标签以显示或隐藏记录 - 因为 onclick 指向客户端 javascript 函数。请注意div.ClientID,这使得这在数据列表中可行。
如上所述 - span 标签确实可以通过"onclick"发挥作用。由于标签控件在页面请求之后呈现为跨度,因此使用 Addtribute.Add("onclick"...)。确实有效。
结果是显示/隐藏数据的功能,而无需执行回发。如果你使用 LinkButton 或 simlar 控件 - 回发和页面重新加载是不可避免的 - 除非你想进入一些 Ajax 的东西。
注意:span 标签看起来不可点击,除非您使用下划线和手形光标设置其样式。
这个想法的功劳来自威尔·阿斯拉里(Will Asarari)http://www.willasrari.com/blog/display-nested-repeaters-and-gridviews-asynchronously/000292.aspx
您需要创建一个继承自标签和 onclick 事件处理程序的类对象,该处理程序将是 yourslef 的方法,并将您的对象用作自定义标签。