asp.net ModalPopupExtender实现指定位置弹出

概述:
      最近由于快速开发用了微软的ajaxcontroltoolkit,实现点击添加然后弹出一个搜索框去选择添加数据的功能
      但是由于页面比较长并且弹出框是居中显示的,所以很多时候不是在屏幕中间显示的,这就需要在页面中设置弹出框的位置
解决方案:
      首先我试着用document.getElementById().style.top去设置他的垂直位置,但是如果你的弹出框中有服务器按钮,比如搜索,即使你在弹出框中放了updatepanel,在数据回发加载后弹出框口的位置会自动回到整个页面的中间,可能是因为我们只是用js去设置的弹出框口的位置,但是服务器并不知道,所以在加载后又重新设置的弹出窗口的位置.
      最后我看了下弹出窗口的js代码,如下:
ContractedBlock.gif ExpandedBlockStart.gif Code
<script type="text/javascript">
    $addHandler($
get("lnkLuRulesShowSearch"), 'click', LuRules_showModalPopupViaClient);
    $addHandler($
get("lnkLuRulesReturn"), 'click', LuRules_hideModalPopupViaClient);
    function LuRules_showModalPopupViaClient(ev) {
        ev.preventDefault();
        var modalPopupBehavior 
= $find('LuRules_programmaticModalPopupBehavior');
        modalPopupBehavior.show();
    }
    function LuRules_hideModalPopupViaClient(ev) {
        ev.preventDefault();
        var modalPopupBehavior 
= $find('LuRules_programmaticModalPopupBehavior');
        modalPopupBehavior.hide();
    }
</script>
      我们看到他弹出窗口是modalPopupBehavior.show();这样来弹出来的,所以我们可以加一个debugger然后可以看到modalPopupBehavior有一个set_Y的方法:
      modalPopupBehavior.set_Y(getElementPos("lnkLuRulesShowSearch").y);
      getElementPos是一个辅助js方法用来获取lnkLuRulesShowSearch这个按钮的位置的,最终代码如下:
ContractedBlock.gif ExpandedBlockStart.gif Code
<script type="text/javascript">
    
// Add click handlers for buttons to show and hide modal popup on pageLoad
    $addHandler($get("lnkLuRulesShowSearch"), 'click', LuRules_showModalPopupViaClient);
    $addHandler($
get("lnkLuRulesReturn"), 'click', LuRules_hideModalPopupViaClient);
    function LuRules_showModalPopupViaClient(ev) {
        ev.preventDefault();
        var modalPopupBehavior 
= $find('LuRules_programmaticModalPopupBehavior');

        modalPopupBehavior.set_Y(getElementPos(
"lnkLuRulesShowSearch").y);

        modalPopupBehavior.show();
    }
    function LuRules_hideModalPopupViaClient(ev) {
        ev.preventDefault();
        var modalPopupBehavior 
= $find('LuRules_programmaticModalPopupBehavior');
        modalPopupBehavior.hide();
    }
</script>
      这样弹出的窗口即使页面回发也不会改变弹出的位置
      希望对遇到同样问题的朋友有所帮助:)

转载于:https://www.cnblogs.com/zrx401558287/archive/2009/09/21/1570789.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值