ModalPopupExtender屏蔽后台事件的解决方案
来源:互联网 发布:数学高一必修三算法 编辑:程序博客网 时间:2024/05/17 09:33
一、问题重现
gridview控件一模板列中有一个”编辑“的linkbutton按钮,我要求点击这个按钮的时候弹出一个div模态层。并且在层里面显示出gridview当前选中行的主键。(注:我用的是ajax自带的ModalPopupExtender控件来弹出模态层)
问题1:如何在linkbutton中取gridview主键?
问题2:ModalPopupExtender对应的TargetControlID是linkbutton控件,这样的话linbutton的后台事件会被屏蔽掉
二、知识点扫盲
1.ModalPopupExtender常用属性
TargetControlID:用于触发弹出面板的控件。
OkControlID:弹出面板中的确认按钮,用于确认新的样式。
OnOkScript:当单击确认按钮后,关闭样式面板后,执行脚本。
CancelControlID:样式面板中的取消按钮,用于取消应用样式。
PopupDragHandleControlID:样式面板中用于触发面板的控件。
DropShadow:样式面板是否有阴影。值为True,则有阴影;值为False,则没有阴影。
BackgroundCssClass:样式面板中应用的css样式。
2.要为ModalPopupExtender添加半透明阴影,需要定义一个CSS类,并指派到BackgroundCssClass属性上。最重要的是这个样式:filter: alpha(opacity=60);
3.如果我们需要用JavaScript控制弹出层的 show/hide ,使用以下代码即可:
$find('Panel1').show()
前提是,PopupControlID和BehaviorID都要是Panel1
三、ModalPopupExtender客户端使用方式 A.直接设置OKControlID的方式 ModalPopupExtender控件在使用时必须要设置TargetControlID和PopupControlID这两个属性,我的理解是,对于ExtenderControl而言TargetControlID属性必须指定,否则就不知道在哪个DOM元素上附加客户端行为了。PopupControlID表示要弹出的仿模式窗口的DOM元素,常见的是Panel控件,这个如果不指定,也没有意义。有时,在执行上下文中可能要在确认这个模式窗口时,执行一些脚本,则可以设置OnOKScript属性,指明确认时要执行的脚本函数。 B.获取一个ModalPopupBehavior实例的方式。 如果页面上放置了ModalPopupExtender控件则可以用$find方法得到一个ModalPopupBehavior实例,这样就可以调用ModalPopupBehavior实例的任何方法了,如hide、show等,此时客户端的行为可以完全自己控制了。这种情况下ModalPopupExtender控件必须要设置BehaviorID属性,否则无法用$find方法来获取ModalPopupBehavior实例。 四、ModalPopupExtender服务器端使用方式 直接调用ModalPopupExtender控件的Show()方法和Hide()方法来控制模式窗口的现实与隐藏 在服务器端调用ModalPopupExtender控件的Show()方法或Hide()方法有个缺点,就是会引起回发,用户体验不好。我们可以将弹出的模式窗口(一个panel控件)放到一个UpdatePanel控件中,并将触发按钮注册为异步回发按钮来改善用户体验。 五、解决方案 1、问题1的解决方案比较简单,为linkbutton添加属性CommandArgument='<%# Bind("主键") %>',绑定主键。在后台的onclick事件中取值:((LinkButton)sender).CommandArgument 2、问题2如果采用客户端使用方式的解决方案 给ModalPopupBehavior添加相应方法,来订阅、取消相应事件,及触发事件的方法。(没有测试过,不知道可行否) 3、问题2如果采用服务器端使用方式的解决方案(经过测试,可行) 不直接通过linkbutton来触发ModalPopupExtender,通过隐藏按钮来触发 首先在页面上放置一个隐藏的button按钮,设置ModalPopupExtender的TargetControlID为隐藏按钮 在linkbutton的后台事件中加载客户端脚本showDiv() 在showDiv的脚本中获取触发button按钮的onclick:var btnHid=document.getElementById("btnHid");btnHid.click();return false; 注:回头看看其实还是挺简单的,不过ModalPopupExtender这个控件真的好好用哦~
- ModalPopupExtender屏蔽后台事件的解决方案
- 让ModalPopupExtender的控制控件能响应服务器事件
- ModalPopupExtender的控制控件能响应服务器事件
- Ajax的 ModalPopupExtender控件
- ModalPopupExtender的用法:
- ModalPopupExtender控件的用法
- ModalPopupExtender
- ModalPopupExtender
- 屏蔽默认的事件功能
- Ajax 中ModalPopupExtender 的应用
- Ajax的 ModalPopupExtender控件使用方法
- Ajax的 ModalPopupExtender控件使用方法
- AjaxControlTookit的ModalPopupExtender弹出应用
- 如何屏蔽SystemUI中长按Home键,弹出SearchPanel搜索,并模拟长按事件的解决方案
- 屏蔽Flex右键的一些解决方案
- 关于“网游屏蔽字简繁混合”的解决方案
- maven中央仓库被屏蔽的解决方案
- ionicPopup 屏蔽物理返回键的解决方案
- 修改文件名
- 最简单的samba服务器配置
- WSS 3.0和MOSS 中的Web Parts
- 心诚向往之
- EXT标准布局类
- ModalPopupExtender屏蔽后台事件的解决方案
- STSADM 命令使用大全
- 使用NLB提升企业高层应用性能
- [Android]自定义移动网络接入点
- Windows 2003 群集技术概述
- Android mdpi hdpi xhdpi xxhdpi
- 页面注册脚本方法
- Alpha Blend and some Optimizition
- asp.net调试