oec2003的学习专栏
临渊羡鱼,不如退而结网
博客园
社区
首页
新随笔
联系
管理
订阅
随笔- 118 文章- 6 评论- 267
asp.net Ajax--HoverMenu控件使用
简介
通过名字我们可以看出这是一个菜单控件,当鼠标移动到指定的位置时,在不影响其他的元素的情况下出现一个菜单,并允许用户进行一些操作。
重要属性
TargetControlID:要显示菜单的目标控件的ID
PopupControlID:作为弹出菜单的控件的ID
HoverCssClass:鼠标移动到目标控件时目标控件的样式
PopupPosition:弹出菜单所在的位置,共有五个值(bottom,top,left,right,center)
OffsetX:菜单距离目标控件的位置--横坐标
OffsetY:菜单距离目标控件的位置--纵坐标
PopDelay:弹出菜单的延迟时间
示例1
1 打开vs2005,创建一个AjaxControlToolKit网站,命名为oec2003_HoverMenu
2 打开默认Default.aspx页,切换到设计视图
3 在页面中添加一个TextBox和一个Panel控件,并在Panel控件中添加三个LinkButton控件,如下
<
asp:Panel
ID
="Panel1"
runat
="server"
Height
="50px"
Width
="125px"
>
<
asp:LinkButton
ID
="LinkButton1"
runat
="server"
OnClick
="LinkButton1_Click"
>
日期
</
asp:LinkButton
>
<
br
/>
<
asp:LinkButton
ID
="LinkButton3"
runat
="server"
OnClick
="LinkButton3_Click"
>
时间
</
asp:LinkButton
><
br
/>
<
asp:LinkButton
ID
="LinkButton2"
runat
="server"
OnClick
="LinkButton2_Click"
>
姓名
</
asp:LinkButton
>
</
asp:Panel
>
4 在页面中添加HoverMenu控件,并设置其属性,代码如下
<
ajaxToolkit:HoverMenuExtender
ID
="HoverMenuExtender1"
runat
="server"
TargetControlID
="TextBox1"
OffsetX
="-1"
OffsetY
="-1"
HoverCssClass
="hover"
PopupControlID
="Panel1"
PopupPosition
="bottom"
>
</
ajaxToolkit:HoverMenuExtender
>
5 切换到代码视图,在head元素间添加css样式,用来实现鼠标移动到目标控件时的样式,如下
<style type="text/css">
.hover
{
}
{
background-color
:
blue
;
background-repeat
:
repeat-x
;
background-position
:
left top
;
}
</style>
6 前面在Panel中放置了三个LinkButton控件,点击了LinkButton控件后会在文本框中出现相应的内容,LinkButton的单击事件代码如下
protected
void
LinkButton1_Click(
object
sender, EventArgs e)
{
TextBox1.Text
=
DateTime.Now.ToShortDateString();
}
protected
void
LinkButton3_Click(
object
sender, EventArgs e)
{
TextBox1.Text
=
DateTime.Now.TimeOfDay.ToString();
}
protected
void
LinkButton2_Click(
object
sender, EventArgs e)
{
TextBox1.Text
=
"
oec2003
"
;
}
7 保存设计,运行程序,将鼠标移动文本框上时,会发现,文本框的样式变成了我们自定义的样式了,而且还会弹出一个菜单,就是Panel控件
点击菜单中的按钮在文本框中就会出现相应的内容
示例2
上面做了一个HoverMenu控件的简单应用,其实HoverMenu控件也可以用于GridView 控件中来替换编辑功能,让编辑列可以出现在我们自定义的菜单中,下面就来看看是怎么实现的吧
1 在网站中新建一个web 页,命名为oec2003_GridViewHoverMenu.aspx
2 切换到设计视图,在页面中添加ScriptManager和UpdatePanel控件
3 在UpdatePanel控件中添加GridView和SqlDataSource控件,并配置数据源,如下
<
asp:SqlDataSource
ID
="SqlDataSource1"
runat
="server"
ConflictDetection
="CompareAllValues"
ConnectionString
="<%$ ConnectionStrings:studentConnectionString %>"
DeleteCommand
="DELETE FROM [studentInfo] WHERE [stuID] = @original_stuID AND [stuName] = @original_stuName"
InsertCommand
="INSERT INTO [studentInfo] ([stuID], [stuName]) VALUES (@stuID, @stuName)"
OldValuesParameterFormatString
="original_{0}"
SelectCommand
="SELECT * FROM [studentInfo]"
UpdateCommand
="UPDATE [studentInfo] SET [stuName] = @stuName WHERE [stuID] = @original_stuID AND [stuName] = @original_stuName"
>
<
DeleteParameters
>
<
asp:Parameter
Name
="original_stuID"
Type
="String"
/>
<
asp:Parameter
Name
="original_stuName"
Type
="String"
/>
</
DeleteParameters
>
<
UpdateParameters
>
<
asp:Parameter
Name
="stuName"
Type
="String"
/>
<
asp:Parameter
Name
="original_stuID"
Type
="String"
/>
<
asp:Parameter
Name
="original_stuName"
Type
="String"
/>
</
UpdateParameters
>
<
InsertParameters
>
<
asp:Parameter
Name
="stuID"
Type
="String"
/>
<
asp:Parameter
Name
="stuName"
Type
="String"
/>
</
InsertParameters
>
</
asp:SqlDataSource
>
4 打开GridView控件的编辑列窗口,将stuName 字段设置成模板列
5 我们要在GridView控件中实现两个菜单,一个是在普通模式下的“编辑”和“删除”,一个是在编辑状态下的“更新”和“取消”
6 编辑模板列,会发现在窗口中有ItemTemplate和EditItemTemplate两项,分别在这两项下添加HoverMenu和Panl控件,每个Panel控件中放置两个LinkButton控件,属性设置如下
<
EditItemTemplate
>
<
asp:TextBox
ID
="TextBox1"
runat
="server"
Text
='<%#
Bind("stuName") %
>
'>
</
asp:TextBox
>
<
ajaxToolkit:HoverMenuExtender
ID
="HoverMenuExtender2"
runat
="server"
TargetControlID
="TextBox1"
PopupControlID
="Panel2"
OffsetX
="10"
OffsetY
="-1"
PopupPosition
="right"
>
</
ajaxToolkit:HoverMenuExtender
>
<
asp:Panel
ID
="Panel2"
runat
="server"
Height
="50px"
Width
="125px"
>
<
asp:LinkButton
ID
="LinkButton3"
runat
="server"
CommandArgument
="Update"
CommandName
="Update"
>
更新
</
asp:LinkButton
>
<
asp:LinkButton
ID
="LinkButton4"
runat
="server"
CommandArgument
="Cacel"
CommandName
="Cancel"
>
取消
</
asp:LinkButton
></
asp:Panel
>
</
EditItemTemplate
>
<
ItemTemplate
>
<
asp:Label
ID
="Label1"
runat
="server"
Text
='<%#
Bind("stuName") %
>
'>
</
asp:Label
>
<
ajaxToolkit:HoverMenuExtender
ID
="HoverMenuExtender1"
runat
="server"
TargetControlID
="Label1"
PopupControlID
="Panel1"
OffsetX
="10"
OffsetY
="-1"
PopupPosition
="right"
>
</
ajaxToolkit:HoverMenuExtender
>
<
asp:Panel
ID
="Panel1"
runat
="server"
Height
="50px"
Width
="125px"
>
<
asp:LinkButton
ID
="LinkButton1"
runat
="server"
CommandArgument
="Edit"
CommandName
="Edit"
>
编辑
</
asp:LinkButton
>
<
asp:LinkButton
ID
="LinkButton2"
runat
="server"
CommandArgument
="Delete"
CommandName
="Delete"
>
删除
</
asp:LinkButton
></
asp:Panel
>
</
ItemTemplate
>
在这儿要注意,因为LinkButton要实现对GridView的数据行的编辑功能,所以LinkButton的CommandArgument和CommandName属性要设置成对应的GridView 的方法的名字,如编辑功能对应的CommandName应该设置成Edit.
7 保存设计,运行程序,当鼠标移动到stuName列的数据行上时,就会出现自定义的菜单,可以实现编辑功能。功能和在GridView中启用编辑的功能一样
posted @ 2007-09-06 14:11
oec2003
阅读(1505)
评论(2)
编辑
收藏
网摘
所属分类:
Asp.net Ajax
发表评论
1267787
回复
引用
查看
#1楼
2007-09-29 08:19 |
专研.NET
谢谢,学习了
回复
引用
#2楼
2008-07-25 21:31 |
zljyunxuan[未注册用户]
我遇到一个问题想要请教一下。我在ASP.NET中用Ajax--HoverMenu控件把装有菜单的Panel挂在导航的linkbutton上的,而且在linkbutton下面一行还有其他控件,运行的时候Panel的内容只显示一部分,另一部分被linkbutton下面一行的控件遮掉了,请问这个问题怎么解决啊?
刷新评论列表
刷新页面
返回页首
发表评论
昵称:
[登录]
[注册]
主页:
邮箱:
(仅博主可见)
验证码:
看不清,换一个
评论内容:
登录
注册
[使用Ctrl+Enter键快速提交评论]
0
884358
链接:
切换模板
导航:
网站首页
社区
新闻
博问
闪存
网摘
招聘
找找看
Google搜索
China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务
相关文章:
最新IT新闻:
Twitter无处不在 魔兽世界Twitter发送器插件发布
Firefox 3.5匆忙推出漏洞多 Mozilla本月将更新
预测:Twitter最可能收购的十家公司
网易澄清:与暴雪合资公司仅提供技术支持
杰克逊悼念仪式或成史上最大规模Web活动
相关链接:
公告
喜欢编程,喜欢篮球,希望和大家成为朋友。
我的最新闪存
宅在屋子里很难受
<
2007年9月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
给我留言
查看留言
我参加的小组
Asp.Net MVC
ASP.NET
Lucene
每日一句英语
读书(Books)
边走边拍
NHibernate
Ext 2.0
.NET 3.x
博客园影视圈
我参与的团队
.NET 控件与组件开发(0/0)
上海.NET俱乐部(0/0)
北京.NET俱乐部(0/0)
应届毕业生之家(0/0)
ASP.NET AJAX (Atlas)学习(0/0)
和谐Web开发(0/0)
RIA技术联盟(0/0)
随笔分类
(140)
Asp.net(48)
(rss)
Asp.net Ajax(20)
(rss)
C#(22)
(rss)
Css(4)
(rss)
DotNet(13)
(rss)
Javascript(14)
(rss)
NHibernate(1)
(rss)
SqlServer(15)
(rss)
Tools(1)
(rss)
设计模式(2)
(rss)
随笔档案
(117)
2009年7月 (1)
2009年6月 (6)
2009年5月 (3)
2009年4月 (1)
2009年1月 (5)
2008年12月 (1)
2008年11月 (1)
2008年10月 (2)
2008年8月 (2)
2008年5月 (1)
2008年4月 (1)
2008年3月 (3)
2008年2月 (3)
2007年11月 (4)
2007年10月 (2)
2007年9月 (4)
2007年8月 (19)
2007年7月 (11)
2007年6月 (18)
2007年5月 (23)
2007年3月 (2)
2007年1月 (3)
2006年12月 (1)
文章分类
(6)
程序人生(5)
(rss)
杂记(1)
(rss)
我的 Blog
我的CSDN博客
我的新浪Blog
积分与排名
积分 - 116618
排名 - 465
最新随笔
1. CLR Via C# 学习笔记(4) 方法 构造函数
2. 替代Eval的两种方式
3. CLR Via C# 学习笔记(3) 常量和字段(const readonly)
4. CLR Via C# 学习笔记(2) 装箱和拆箱
5. CLR Via C# 学习笔记(1) 基元类型 值类型 引用类型
6. ZedGraph在Web中的使用
7. SQL实现分组统计查询(按月、小时分组)
8. 在vs2008中设置jquery智能提示
9. 推荐一款小巧的截图工具
10. Sqlserver2005附加数据库为只读的解决方法
11. 递归实现CSS菜单
12. NHibernate入门级示例(增 删 改)
13. 揭秘ASP.NET 2.0的Eval方法
14. asp.net 连接access数据库
15. 消除window.close()的提示窗口
16. Response.Redirect在新窗口打开 && 3.0扩展方法
17. masterpage 小谈
18. 利用HttpModule实现防sql注入
19. checkbox 全选终极方案
20. My97 使用的一点技巧
21. SQL 計算一個字符串在另一個字符串中出現的次數
22. 彈出窗口詳解【轉】
23. 开发总结(2)---Javascript
24. 开发总结(1)---数据库
25. sql中分隔字串-->查询-->组合字串
26. c#3.0学习(3)---匿名类型
27. 揭开正则表达式的神秘面纱
28. c#3.0学习(2)---对象集合初始化器
29. c#3.0学习(1)---隐含类型局部变量和扩展方法
30. 动态添加gridview行
31. 几个不同类型无刷新联动例子
32. c#和javascript交互
33. GridView中实现CheckBox的全选
34. asp.net Ajax--Calendar控件使用
35. 存储过程生成流水号
36. 在客户端遍历控件
37. asp.net Ajax--PopupControl控件使用
38. 对设计模式的一点理解
39. asp.net Ajax--HoverMenu控件使用
40. asp.net Ajax--ValidatorCallout控件使用
最新评论
1. Re:SQL 計算一個字符串在另一個字符串中出現的次數
挺不错的,很好的想法 (挺不错)
2. re: 在vs2008中设置jquery智能提示
对头,文章就该这么写.
但连接绝对不该这样连接
呵呵
受教了。。。 (Small0426)
3. re: CLR Via C# 学习笔记(3) 常量和字段(const readonly)
顶了先... (Old)
4. re: 在vs2008中设置jquery智能提示
@匿名
呵呵 谢谢支持
(oec2003)
5. re: 在vs2008中设置jquery智能提示
对头,文章就该这么写. (匿名)
6. re: 利用HttpModule实现防sql注入
拜读大作,有点自己的考虑,希望交流一下就我个人所理解的asp.net的编程框架。 IHttpModule 这个接口在所有用户对不同page的请求前执行。无论任何的page都会用到楼主自定义的注册的事件... (发条橙子)
7. re: 利用HttpModule实现防sql注入
@发条橙子
这种限制确实不很通用 ,在文中我也说了
这种方式可以对url的参数和form提交的内容都能监测到,实用特定场合 (oec2003)
8. re: CLR Via C# 学习笔记(1) 基元类型 值类型 引用类型
@发条橙子
谢谢支持 ,会把这个坚持写完的,写写记忆深刻
(oec2003)
9. re: 利用HttpModule实现防sql注入
拜读大作,有点自己的考虑,希望交流一下就我个人所理解的asp.net的编程框架。 IHttpModule 这个接口在所有用户对不同page的请求前执行。无论任何的page都会用到楼主自定义的注册的事件... (发条橙子)
10. re: CLR Via C# 学习笔记(1) 基元类型 值类型 引用类型
好文,收藏。看完博主的帖子,又把自己学的东西梳理里一遍。期待博主多写。 (发条橙子)
阅读排行榜
1. asp.net Ajax ---AutoComplete控件使用(5262)
2. AjaxControlToolkit安装&下载 (4765)
3. 关于ASP.NET页面打印技术的总结(3287)
4. asp.net Ajax--Calendar控件使用 (3188)
5. c#和javascript交互(3064)
6. .NET3.5和VS2008中的ASP.NET AJAX(2914)
7. asp.net中页面间传值方法(2266)
8. NHibernate入门级示例(增 删 改)(2066)
9. asp.net Ajax--PopupControl控件使用(1791)
10. .NET 3.0 框架介绍(1755)
评论排行榜
1. asp.net Ajax ---AutoComplete控件使用(34)
2. NHibernate入门级示例(增 删 改)(19)
3. c#和javascript交互(13)
4. 开发总结(2)---Javascript(11)
5. 利用HttpModule实现防sql注入(11)
6. C#数据库操作的三种用法(11)
7. C#中判断空字符串的3种方法性能分析(8)
8. .NET3.5和VS2008中的ASP.NET AJAX(7)
9. SQL Server与Oracle、DB2三种数据库比较(7)
10. asp.net Ajax--PopupControl控件使用(7)
60天内阅读排行
1. 在vs2008中设置jquery智能提示(490)
2. Sqlserver2005附加数据库为只读的解决方法(324)
3. SQL实现分组统计查询(按月、小时分组)(149)
4. ZedGraph在Web中的使用(133)
5. 替代Eval的两种方式(112)
6. CLR Via C# 学习笔记(1) 基元类型 值类型 引用类型(94)
7. 推荐一款小巧的截图工具(90)
8. CLR Via C# 学习笔记(3) 常量和字段(const readonly)(70)
9. CLR Via C# 学习笔记(2) 装箱和拆箱(64)
10. CLR Via C# 学习笔记(4) 方法 构造函数(50)