我想做这样的事情:
<asp:Label ID="lblMyLabel" onclick="lblMyLabel_Click" runat="server">My Label</asp:Label>
我知道在Javascript中我能做到:
<span onclick="foo();">My Label</span>
所以我想知道为什么我不能用Label对象做到这一点。
答案 0 :(得分:42)
您可以使用属性添加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; }
答案 1 :(得分:11)
您的问题未指定是否要提升服务器(VB或c#)或客户端(javascript)上的click事件。如果您正在寻找服务器端事件,则应使用链接按钮css使链接显示为标签。然后,您可以使用链接按钮的服务器端单击事件。如果您正在寻找客户端点击事件 - 只需将其输入您的服务器控件标记中asp:label id="MyLabel" runat="server" onclick="javascript:alert('hello');" Text="Click Me";
ASP.NET将在生成的html标记中发出其他属性。
答案 2 :(得分:5)
您可以在page_load中的代码中执行此操作,例如:
void Page_Load(object sender, EventArgs e)
{
lblMyLabel.Attributes.Add("onclick",
"javascript:alert('ALERT ALERT!!!')");
}
答案 3 :(得分:2)
如果您想要onclick事件,为什么不使用具有onclientclick
事件的链接按钮:
<asp:linkbutton id="lblMyLink" onclientclick="lblMyLink_Click" runat="server">My Label</asp:linkbutton>
您可以使用CSS使链接看起来像您想要的任何内容
答案 4 :(得分:1)
我认为你可以,但它是一个客户端onclick处理程序,而不是服务器端。它会抱怨该属性不受支持(或某些此类),但我认为它可以正确呈现。如果你想要服务器端处理程序,我认为你需要做一个LinkButton。
答案 5 :(得分:1)
据我所知,这是不可能的。标签控件会发出<span
&gt;服务器端“无法点击”的元素。您需要使用LinkButton替换Label控件。
答案 6 :(得分:0)
另一个黑客是使用带有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>
答案 7 :(得分:0)
你总是可以使用.net的标准回发javascript推出你自己的控件,产生一个跨度,但如前所述使用带有CSS类的linklabel会更容易
答案 8 :(得分:0)
只是为了解决这个问题, 我在.aspx页面中使用了一个标签,如果数据集中有子记录,则只能在我的DataList Item模板中看到。
我在标签上添加了一个onclick函数:
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 Asrari在http://www.willasrari.com/blog/display-nested-repeaters-and-gridviews-asynchronously/000292.aspx
答案 9 :(得分:0)
您需要创建一个继承自label和onclick事件处理程序的类对象,该处理程序将是yourslef的一个方法,并将您的对象用作自定义标签。