将ASP.NET控件加入快捷菜单
虽然快捷菜单在桌面应用程序中已经是非常通用的元素,但是由于在象ASP.NET这样的基于服务器的技术没有很好的描绘,所以在Web应用程序中快捷菜单并不是很通用。要想使用快捷菜单,浏览器必须高度支持DHTML和丰富事件模式,例如:Microsoft Internet Explorer 5.0及更高版本,或者Netscape 6.0等。然而,各种浏览器的对象模式虽然功能上大至相同,但是成员各名字却各不相同,这就需要我们自己实现对象和事件的从一种模式到到另一种模式的转换。 这里,我们创建一个针到Internet Explorer的对象模式的ASP.NET快捷菜单。接着,我将经过修改使其功能支持其它浏览器。代码支持ASP.NET 1.x,也可以在ASP.NET2.0 Beta1下编译通过 Outline of the ContextMenu Control 快捷菜单控件概述: MSDN Liabrary 中包含了几个DHTML快捷菜单的示例。分别提供了对这一功能的不能实现方法。一个快捷菜单就是在页面中任何位置的一组标记代码。它包括两部分内容——界面和脚本(当用户在页面右击时关联UI),UI提供一个可点击的元素的列表——菜单项——和各自的内容文本,图标,命令名(command name),目标url,提示(tooltip),和所有你认为有必要显示出来的东西。快捷菜单界面是页面的一部分,并且属于页面控件树中的一员。(太多的快捷菜单将会出现执行的问题:与大多数用户的常规情况相比,ASP.NET将发送更多的快捷菜单到浏览器)当用户在页面的一个元素上右击时,将引发一段JavaScript,这段脚本将快捷菜单移动到右击的位置显示。 快捷菜单将保持隐藏属性,只有当用户在页面的一个绑定个快捷菜单的元素上右击时,快捷菜单才显示。页面元素接收脚本事件并弹出一个快捷菜单作为响应。脚本事件信赖于浏览器,在Internet Explorer 5.0和更新版本中是 OnContexMenu事件.在Netscape6.0和更新版本中你要使用 OnMouseUp 事件(在Internet Explorer 5.0+中你也可能使用OnMouseUp事件,但要多写几行代码)在接收事件的脚本中,获取快捷菜单的UI代码块并且将它移动到发生点击的位置。同时设置弹出的panel的 visibilty属性。当用户在菜单项上点击时,页面回传并引发服务器端事件。对于服务器而言,点击一个菜单项和点击一具常规的按钮没什么区别。 当用户户想取消已经打开的快捷菜单时怎么办呢?在windows程序中,按下Esc键或者在菜单区域外点击都可以取消已弹出的快捷菜单。所以你必须在Web中实现这一功能。请注意,只有快捷菜单处于活动(显示出来)时,Esc键才有郊。因为Esc还可用于其它元素的其它键盘快捷方式。 我还可以让菜单在用户鼠标移开菜单时隐藏。可以通过脚本操作 OnMouseLeave 事件实现。 使用弹出菜单控件 假定我们已以设计出了这个弹出菜单(我们一会儿再说如何实现这个快捷菜单控件),那么如何使用它在ASP.NET页面中添加一个或多个快捷菜单呢?首先,在Visual Studio? .NET的工个栏中拖一个或多个快捷菜单控件到页面上。然后,为每个菜单添加菜单项,并配置每个菜单项的的工具提示,命令名(command name)和其它所需的内容,例如快捷键和帮助主题的链接。命令名(command name)用于在响应点击快捷菜单发生页面回传时确定是哪一个菜单项被点击;对每一个快捷菜单控件实例的菜单项集合它必须是唯一的。 你必须在HTML标签的OnContextMenu事件中加入代码来弹出快捷菜单,代码必须信赖一系列的参数,象点击的x,y坐标,点击的元素,和要使用的快捷菜单的实例等。注意:如果必要你可以使用这种方式完全代替浏览器的快捷菜单。绑定到OnContextMenu事件执行的JavaScript代码是在运行时动态生成的。ContextMenu控件将暴露一个集合属性来包含分绑定快捷菜单的控件集合,在ContextMenu控件将在运行时给这些要绑定的控件一 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |