将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 事件实现。

时间: 2024-12-30 14:36:01

将ASP.NET控件加入快捷菜单的相关文章

为ASP.NET控件加入快捷菜单(1)

asp.net|菜单|控件 为ASP.NET控件加入快捷菜单(1)           虽然快捷菜单在桌面应用程序中已经是非常通用的元素,但是由于在象ASP.NET这样的基于服务器的技术没有很好的描绘,所以在Web应用程序中快捷菜单并不是很通用.要想使用快捷菜单,浏览器必须高度支持DHTML和丰富事件模式,例如:Microsoft Internet Explorer 5.0及更高版本,或者Netscape 6.0等.然而,各种浏览器的对象模式虽然功能上大至相同,但是成员各名字却各不相同,这就需要

Cutting Edge:为ASP.NET控件加入快捷菜单(2)

asp.net|菜单|控件 Cutting Edge:为ASP.NET控件加入快捷菜单(2)英文原文:Adding a Context Menu to ASP.NET Controls作者:Dino Esposito翻译:刘瑞才源码:CuttingEdge0502.exe 编程接口 我们的ContextMenu控件从WebControl继承并执行INamingContainer接口 public class ContextMenu : WebControl, INamingContainer 图

ASP.NET控件利用Control.ContextMenu加入快捷菜单

ContextMenu Control 快捷菜单控件概述: MSDN Liabrary 中包含了几个DHTML快捷菜单的示例.分别提供了对这一功能的不能实现方法.一个快捷菜单就是在页面中任何位置的一组标记代码.它包括两部分内容--界面和脚本(当用户在页面右击时关联UI),UI提供一个可点击的元素的列表--菜单项--和各自的内容文本,图标,命令名(command name),目标url,提示(tooltip),和所有你认为有必要显示出来的东西.快捷菜单界面是页面的一部分,并且属于页面控件树中的一员

如何更改menu控件的二级菜单背景颜色,和字体颜色

问题描述 如何更改menu控件的二级菜单背景颜色,和字体颜色 解决方案 解决方案二:每个控件都有style属性,你可以放入css代码.解决方案三:引用1楼caozhy的回复: 每个控件都有style属性,你可以放入css代码. 我更改了csslcass后,发现修改的是一级导航的背景宽度,二级下拉导航还是没有改变..解决方案四:设置Menu的StaticDisplayLevels="2",Menu不是有下面这个配置节点么,表示显示层级的菜单项样式<LevelMenuItemStyl

asp.net控件Repeater说明

asp.net控件Repeater说明 在 .aspx 页面中创建一个 Repeater 控件.<HeaderTemplate> 元素中的内容在输出中仅出现一次,而 <ItemTemplate> 元素的内容会对应 DataSet 中的 "record" 重复出现,最后,<FooterTemplate> 的内容在输出中仅出现一次. 在 <ItemTemplate> 元素后添加 <AlternatingItemTemplate>

ASP.NET控件开发之“代码紧凑原则”

asp.net|控件|控件开发    我们知道制作一个控件,一般比只实现同样功能的模块要复杂,因为我们需要考虑更多的异常和适应性,才能达到我们整合和复用代码的效果.而当我们开发一个ASP.NET控件时,不管我们的控件有多么复杂的功能和UI表现,我们最终在客户端浏览器里得到的都只是HTML代码和脚本的组合.    而就是这些控件生成的HTML代码,它们的格式是不是就可以随意处理呢.那么不能随意又是什么意思?难道我们必须要保证HTML代码的排版,并保持HTML良好的层次缩进什么的吗?这里刚刚相反,我

使用Control Adapters优化Asp.net控件

asp.net|控件|优化 有些时候Asp.net 控件默认状态下生成的html代码,不能满足一些特定的需要.比如 我们想让用户做一些选择,可以很容易的用如下代码实现 <asp:CheckBoxList runat="server">   <asp:ListItem Text="One" />   <asp:ListItem Text="Two" />   <asp:ListItem Text="

使用ASP.NET控件进行程序设计

asp.net|程序|控件|设计        ASP.NET 控件时ASP.NET架构的基本组成部分.从本质上讲,ASP.NET是.NET    Framework中的类,可以在ASP.NET页面上映射控件声明.然后,那些类根据他们的   属性,为控件创建HTML.由于类的对象是在运行时间与页面一起被编译的,因此开   发人员可以按照面向对象的方式访问那些对象,例如读取和更改他们的属性.调用他   们的方法和处理服务器端的事件等.在传统ASP程序设计中,服务端的VBScript代码   和HT

介绍一个免费的具备数据显示/录入/更新/删除功能的asp.net控件

asp.net|控件|数据|显示 我不能说它比datagrid更强, 因为datagrid有很多深层次的东西可以发掘,但是我能说它比datagrid更易用,更实用,因为它已经轻松实现如下功能,同时,它是完全免费的,不需要注册,没有任何的功能限制. 1. 通过属性设置数据表的显示2. 客户端数据排序3. 各种字段类型的格式化显示4. 所有数据表轻松实现内置的数据添加.更新.删除功能 5. 提供密码字段的支持并使用32位MD5编码6. 添加.更新图象字段.链接文件字段时自动上传文件 7. 上传图片时