AJAX ModalPopup弹出背后(下)页面内容(负z-index)

时间:2010-05-10 19:45:43

标签: ajaxcontroltoolkit modalpopupextender

AJAX控件工具包(http://ajaxcontroltoolkit.codeplex.com/releases/view/43475)版本40412中的AJAX ModalPopupExtender存在问题。

第一次使ModalPopup可见时,它可以正常工作。 z-index设置为6001(背景Div的z-index设置为6000),弹出窗口显示在其他所有内容之上。如果单击ModalPopup中的取消按钮,它也具有正确的功能,显示设置为“无”,并且不再显示ModalPopup。

但是,当再次触发弹出窗口时,z-index仅设置为2000,它仍然可以在其他所有内容上看到,但如果它被取消并再次触发,则将其设置为-2000,这是不可见的(z -index每次减少4000。)

我不确定为什么会这样。任何想法如何解决它?

特殊情况:

  • 页面上有多个ModalPopup。
  • 所有ModalPopup都是通过部分页面回发在代码隐藏中触发的(使用.Show()方法)
  • ModalPopupExtenders位于弹出窗口显示的同一个UpdatePanel中

更新: 这是项目团队确认的错误。 http://ajaxcontroltoolkit.codeplex.com/workitem/26739。现在已经修复了。

5 个答案:

答案 0 :(得分:1)

一种解决方法是为ModalPopup设置CSS,如下所示;这将覆盖AJAX Control Toolkit应用于元素的内联CSS。

.ModalPopup
{
    z-index: 6001 !important;
}
.ModalPopupBackground
{
    z-index: 6000 !important;
}

答案 1 :(得分:1)

我刚遇到这样的问题。这是我提出的快速修复

<script type="text/javascript">
    onload = function() {
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(resetCounter);
    }
    function resetCounter(sender, args) {
        try {
            Sys.Extended.UI.ModalPopupBehavior._openCount = 0;
        } catch (ex) {
            // try-catch-throw away!
        }
    }
</script>

在ExtendedModalPopup javascript中,它在每个返回的部分页面上调用hide来执行_openCount - 。

这是基于_opencount:

设置zindex的代码
var zindex = 10000 + (Sys.Extended.UI.ModalPopupBehavior._openCount++ * 1000);

所以_openCount被设置为负数

答案 2 :(得分:1)

这是项目团队确认的错误。 http://ajaxcontroltoolkit.codeplex.com/workitem/26739。现在已经修复了。

来自团队:我们已经确认这是初始版本40412中的错误。我们现在已经更换了修复此版本的修改版本。请再次下载40412以解决此问题

答案 3 :(得分:1)

如果涉及更新面板,则工具包的15.1.4版中会引入类似的问题。 https://ajaxcontroltoolkit.codeplex.com/workitem/27971 此时尚未修复,但15.1.3未显示此问题。

答案 4 :(得分:0)

就我而言,modalpopup在前10次完美运行,但下次出现在页面的其他组件后面。在CSS中设置z-index对我有用,谢谢!

.modalbackground {
    background-color: Gray;        
    filter: alpha(opacity=70);
    opacity: 0.7;
    z-index: 6000 !important;
    }    
.popup
    {        
    background-color:#FFF;
    padding:10px;     
    max-width:600px;
    z-index: 6001 !important;
    }