asp.net中按钮回车事件(转自http://www.cnblogs.com/adinet/archive/2013/03/03/2941424.html)...

news/2024/7/7 19:22:12

在做ASP.net WEB应用的时候,常常遇到会在同一个页面里添加多个按钮,而每个按钮肯定都会触发页面回送事件。

在ASP.NET中,只能指定一个带有runat="server"的FORM表单,因此,这个表单会指派哪个按钮为默认提交按钮呢?

不做任何处理的情况下是很难控制的,例如在同一个页面里做了N个搜索框,设计上理想的思路是在某一输入框输入关键字后,用户按ENTER键,执行当前输入的输入框对应的提交按钮,但是,实际上往往事与愿违。无论怎么提交,总是会只执行某一个按钮事件。

如果指定Form的默认按钮,可以指定Form的DefaultButton属性值为一个按钮的ID。但这样下来,回车时就永远执行这个按钮,其它按钮无法被回车触发。

 

网上很多方法都是使用JAVASCRIPT来进行判断,在输入框中加入KEYPRESS之类的事件,然后检查eventCode,如果是回车键,那么就指定执行某一个按钮。

这个方法不是不行,但是,并不好维护,而且在处理复杂的逻辑时,往往不好控制。

 

其实,ASP.NET给出了很好的解决方案,只是通常不被人注意。

首先,屏蔽浏览器提交模式,也就是说,FORM不再默认指定一个ENTER提交的按钮

 

方法是将控件button的UseSubmitBehavior设置为false(LinkButton和ImageButton没有这个属性,不必设置),这样这个按钮就不会接受回车提交,这样就不会出现用户焦点在页面某处聚焦时按回车提交的情况。

为什么会这样呢?查看页面源文件我们会发现本来ASP.NET的BUTTON服务器控件在发送到客户端后type="submit",但这时UseSubmitBehavior设置为false后,type="button" ,而且多了一个onclick事件,内容是"javascript:__doPostBack('Button1','')" id="Button1",这样,就说明,这个按钮不再是FORM的提交按钮了,而只是一个普通按钮,要提交页面必须执行click事件,所以怎么点回车,也不会执行这个按钮的提交事件。

 

刚才只是第一步,阻止了默认的提交。但是,我们要的效果是回车可以提交啊。只是设置这一个属性当然无法达到我们想要的效果。

接下来,我们要了解Panel控件。

其实Panel控件是非常有用的,他是一个容器,在ASP.NET的Panel控件中有一个属性 DefaultButton, 这个属性在ASP.NET的Form控件中也有(前有叙述)。

Panel是一个特殊的控件 MSDN上的说明是:使用Panel 控件来组织 Form、另一 Panel 或模板中的内容和控件。

也就是说Panel是ASP.NET对Form的一个补充,可以给表单分区域的控件,这也是为什么ASP.NET AJAX容器使用该控件的原因。

我们都知道,ASPX只能有一个runat=“server”的FORM表单,那么要进行细致,具体的FORM操作怎么办,那么就得靠Panel控件

这里,我们就会用到Panel的这个功能

将一组输入框和按钮放在一个Panel中,指定该Panel的DefaultButton属性为按钮ID,这样,当用户焦点处于这个Panel内的某一控件时,点击回车就会执行这个Panel的DefaultButton所指定的按钮。

 

Panel是Form的补充控制,可以通过使用Panel对表单进行更多的操作,这样,ASP.NET只能拥有一个Form所引起的一些困难都可以迎刃而解。

原文 http://blog.sina.com.cn/s/blog_568e662301018n2i.html

转载于:https://www.cnblogs.com/dfxyw/p/5566857.html


http://www.niftyadmin.cn/n/4482040.html

相关文章

SU Demos-02Filtering-06Sukfilter

本demo中数学原理纯粹不知道,看来以后需要抓紧时间补课了,只附图。 运行结果图如下: 转载于:https://www.cnblogs.com/ky027wh-sx/p/5570630.html

Android 布局开发之百分比布局、弹性布局

1.百分比布局 很简单,超级简单。引用之后就可以使用了。 compile com.android.support:percent:23 git地址: https://github.com/JulienGenoud/android-percent-support-lib-sample.git 注意:使用的时候,百分比布局只对他包含的一…

幸福的生日

明天即将踏上工作的旅程,妈妈将我的生日提前,中午爸妈请我们一起吃海底捞给我庆祝生日。 中午12点到位于家不远的华商海底捞,这是第一次吃海底捞的地方,也是吃的最多次的地方,对这有特殊的感情。生意一如既往的好&…

7_6 带宽(UVa140)回溯法:最优性剪枝

给定一个图(V,E),其中V为顶点的集合,E为边的集合,属于VxV。给定V中元素的一种排序,那么顶点v的带宽定义如下:在当前给定的排序中,与v距离最远的且与v有边相连的顶点与v的距离。给定排序的带宽定义为各顶点带…

经典的菜单显示隐藏代码

1.按钮上的click事件 : 控制菜单的显示隐藏,同时需要阻止事件冒泡到document; 2.document的click事件: 让menu隐藏,这个功能是点击document任意一处,将菜单隐藏; 3.菜单的click事件:菜单本身并没有,是菜单内…

表连接、TSQL基本编程、存储过程

表连接:将多个表的数据一次性查询出来,共同显示 子查询方式: select (select 列 from 名where 名.列 名.列)列 from 名 笛卡尔积: select 列,列from 名,名 where 名.列 名.列 join on&#xf…

sql递归查询 根据Id查所有子结点

Declare Id Int Set Id 0; ---在此修改父节点 With RootNodeCTE(D_ID,D_FatherID,D_Name,lv) As ( Select D_ID,D_FatherID,D_Name,0 as lv From [LFBMP.LDS].[dbo].[LDS.Dictionary] Where D_FatherID In (Id) Union All Select [LFBMP.LDS].[dbo].[LDS.Dictionary].D_ID,[L…

C#使用二叉树算法设计一个无限分级的树表

效果图: 数据库: 操作树的示意图: 控制器代码: using Dw.Business; using Dw.Entity; using Dw.Utilities; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web.Mvc; usin…