在ASP.net Webforms中,如何检测到有人按下Enter的哪个Textbox?
在ASP.net Webforms中,如何检测到有人按下Enter的哪个Textbox?
请没有Java脚本答案。
我需要使用VB.NET来处理所有代码。
解决方案
回答
我怀疑当我们按Enter键时,如果没有javascript,就无法完成此操作,浏览器将提交表单,而不提交焦点所在的字段。因此,除非我们使用JS将该信息添加到正在提交的表单中,否则我们很不走运。
回答
如果不使用Javascript,便无法做到。该信息不会从客户端浏览器传送到服务器。
回答
据我所知,服务器端脚本无法检测到该情况。它根本不会发送到服务器。它必须在客户端(即使用Javascript)完成,然后发送到服务器。
回答
为什么需要确定按下了哪个TextBox?我们是否正在查看哪个TextBox被关注,以便可以触发适当的按钮单击事件?
如果我们想做这样的事情,我做过的一个小技巧就是将适当的表单元素"分组"在自己的面板中,然后相应地设置" DefaultButton"属性。
这样做使我可以使用"按名称搜索","按部门搜索","按ID搜索"等。在单个表单上使用文本框/按钮组合,仍然允许用户键入查询参数,按Enter,然后在后面的代码中调用了正确的搜索方法。
回答
我通过查看服务器端的Request.Form对象,以查看搜索框是否具有值,从而解决了一个站点的搜索问题。我是在所有页面(或者母版页的基类)继承的基类中完成此操作的。如果它有一个值,那么有人输入某些内容并按回车键的可能性就很大,所以我处理了搜索。
回答
在事件处理程序中,"源"对象(事件处理程序的第一个参数)是引发事件的对象。将其键入按钮并获取名称,或者使用反射将信息从非类型化对象中获取。
另外,如果控件是Web控件的子级,而我们没有引发它自己的事件(只是说...),则可以使用OnBubbleEvent来确定正在发生的事情。 OnBubbleEvent还具有我们可以键入或者使用反射的"源"参数。