将ASP.NET控件加入快捷菜单
什么不同呢?前者是当鼠标移动到一个新的元素上时发生,而后者是当鼠标移出绑定对象时发生。举例说明:你的鼠标在一个有两行的表单(table)上移动。当你在table的两行之间移动时,onmouseout事件就会发生;只有你的鼠标移动到table表单之外时onmouseleave事件才发生。
Table包含和要显示的菜单项个数相同的行,每一行有一个单元格,每个单元格里放一个LinkButton对象。菜单通过一个循环创建:
行的单元格有一组脚本操作——onmouseover和onmouseout——完成鼠标划过的效果。当鼠标划过时改变背景颜色。鼠标离开时恢复初始颜色。默认的背景色由从WebControl继承的background属性指定。高亮颜色由新的属性RolloverColor指定。
你需要把.NET的System.Drawing.Color值转换成可用的HTML颜色。有意思的是,无论是Color类的ToString方法还是它的Name属性都不能在所有情况下返回对应的HTML颜色字符串,不知是不是有意这样的:(。Name属性基本可以实现这一功能,只有和种情况例外。当颜色不能和已知的颜色匹配时,这个属性返回颜色的RGB组,外加alpha通道值。要得到当前的HTML颜色,你必须移除alpha通道值(通常是开头的十六进制 ff 字符串)并使用#号替换它。幸运的是,System.Drawing.ColorTranslator类可以自动完成这项工作:)。 我们接着要对链接按钮做一些调整,以使其正常工作。 也就是:把链接的宽度设成100%以确保当没有其它设置时,在整个行上光标都是手状。 同样的,要设置从对应的菜单项对象得到的文本(text),工具提示(tooltip),和命令名(command name)。最后为点击事件关联一个处理器。
回传时,事件源被识别为在ContextMenu命名容器内的LinkButton,并且得到处理回传事件的时机。点击事件的内部处理器将所有信息打包进一个新的ItemCommand 事件并引激活这个事件,参见下面的代码
页面上的代码将获得两部分内容:引发事件的ContextMenu实例;与点击项相关的command name。 这时,table就是快捷菜单的用户界面。它一开始被放置在页面的任意位置,并且使用CSS样式表在视图中隐藏。在用户右击时,这段HTML代码块(使用绝对位置方式定位)将被显示成一个快捷菜单。JavaScript代码负责截取事件并把菜单移动动所需位置,参见如下代码:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |