将linkbutton设置为asp.net中asp:panel的默认按钮[复制]
如何在asp.net中将链接按钮设置为asp:panel的默认按钮?我知道按钮可以设置为默认值,但我的应用程序使用所有表单的链接按钮.任何建议如何做到这一点. 编辑: 现在我试过这个, var __defaultFired = false; function WebForm_FireDefaultButton(event,target) { var element = event.target || event.srcElement; if (!__defaultFired && event.keyCode == 13 && !(element && (element.tagName.toLowerCase() == "textarea"))) { var defaultButton; if (__nonMSDOMBrowser) defaultButton = document.getElementById(target); else defaultButton = document.all[target]; if (defaultButton) { if (typeof (defaultButton.click) != "undefined") defaultButton.click(); else eval(unescape(defaultButton.href.replace("javascript:",""))); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return false; } } return true; } 第二次编辑: 我能够使我的自定义linkbutton控件工作,但无法将OnClientClick挂钩到它.来源using-panel-defaultbutton-property-with-linkbutton-control-in-asp-net. 我这样做了 <%@ Register Namespace="App_Code" TagPrefix="ac" %> <asp:Label runat="server" ID="lblHello" /> <asp:Panel runat="server" DefaultButton="lbHello"> First name: <asp:TextBox runat="server" ID="txtFirstName" /> <ac:LinkButtonDefault ID="lbHello" runat="server" Text="Click me" OnClientClick="javascript:alert('hai');" OnClick="lbHello_Click" /> </asp:Panel> 我的客户端功能不起作用?任何建议. 解决方法
您可以采用添加属性的简单方法来处理文本框的onKeyPress事件,而不是使用自定义控件.这正确处理从文本框中按Enter键并触发LinkBut??ton事件.这种方法的缺点是在Firefox中不会触发任何LinkBut??ton OnClientClick事件,这与您链接到的博客文章中描述的问题有关.只有当用户用鼠标实际点击链接时才会触发它.但是,在IE中,它将从文本框和直接单击触发.
解决方案#1 – 添加属性的代码如下: protected void Page_Load(object sender,EventArgs e) { txtFirstName.Attributes.Add("onKeyPress","javascript:if (event.keyCode == 13) __doPostBack('" + lbHello.ClientID + "','')"); } 试试看,看看它是否符合你的需求.请记住我之前描述的限制. 现在,如果您希望上述限制消失,那么该博客文章中的one of the comments显示了一种似乎正常工作的方法.我已经修改它以摆脱StringBuilder并将其转换为C#. 解决方案#2 – 添加函数并注册它的代码如下: protected void Page_PreRender(object sender,EventArgs e) { string addClickFunctionScript = @"function addClickFunction(id) { var b = document.getElementById(id); if (b && typeof(b.click) == 'undefined') b.click = function() { var result = true; if (b.onclick) result = b.onclick(); if (typeof(result) == 'undefined' || result) eval(b.getAttribute('href')); } };"; string clickScript = String.Format("addClickFunction('{0}');",lbHello.ClientID); Page.ClientScript.RegisterStartupScript(this.GetType(),"addClickFunctionScript",addClickFunctionScript,true); Page.ClientScript.RegisterStartupScript(this.GetType(),"click_" + lbHello.ClientID,clickScript,true); } 页面标记 – <asp:Label runat="server" ID="lblHello" /> <asp:Panel ID="Panel1" runat="server" DefaultButton="lbHello"> First name: <asp:TextBox runat="server" ID="txtFirstName" /> <asp:LinkButton ID="lbHello" runat="server" Text="Click me" OnClick="lbHello_Click" OnClientClick="javascript:alert('Hello,World!');"/> </asp:Panel> 在这两种情况下,都不需要自定义控件来实现此类功能.把事情简单化. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ASP.NET MVC:将复杂类型绑定到选择
- 使用RCurl getURL函数访问ASP网页时出现“Object Moved”错
- asp.net-mvc-4 – 使用Razor更改MVC4中html.editorfor帮助程
- asp.net-mvc-4 – MVC4 Kendo项目Ajax.BeginForm UpdateTar
- [Hei.Captcha] Asp.Net Core 跨平台验证码实现
- asp.net – Nlog数据库目标 – 是否使用keepConnection?
- asp.net – 选择性地将CSS应用于gridview中的一行
- .net – 强制从/ bin加载汇编,而不是GAC?
- asp.net – InvalidOperationException:在程序集上找不到“
- asp.net – 如何在MVC4中扩展内容协商行为?
- asp.net – 检查该电子邮件地址是否适用于System
- asp.net-mvc – 重命名重构在强类型剃刀视图中为
- asp.net – iis表示没有调试的运行站点(即在vs打
- asp.net-mvc – 使用AWS .NET SDK进行SNS订阅确认
- asp.net-mvc – ASP.net MVC中的第二级视图
- asp.net – 在页面刷新时再次触发GridView_RowCo
- asp.net-mvc – MVC ajax json post到控制器动作
- asp.net – Oracle padding exploit – 如何下载
- asp.net-mvc – 使用来自MVC的SAML和Okta进行身份
- asp.net-mvc – 使用Ajax.BeginForm绑定HttpPost