代码之家  ›  专栏  ›  技术社区  ›  Scott

extjs组合框有时隐藏在窗口后面,灰显

  •  1
  • Scott  · 技术社区  · 15 年前

    因此,当用户选择保存到extjs弹出模式窗口时,调用下面的代码。此窗口只包含一个组合框。现在,有时当用户保存此内容,然后稍后重新打开时,组合框将显示在窗口后面,全部变灰,无法访问。其他时候,它会很好的工作,在任何时候发生的事件都没有区别,只是完全不一致。

    有人知道这可能是什么吗?

    var changeProductOK = function() {
                var win = getChangeProductWindow();
                if (win.subProductId.getValue() == '') {
                    Global.alert('Choose a product');
                    return;
                }
                win.hide();
                PropertiesWin.hide();
    
                Global.confirm('You sure?', 'Confirm', function(result) {
                    if (result) {
                        Global.mask('Changing the product', workspacePanel.getEl());
                        WorkspaceController.ChangeProduct(applicationId, win.subProductId.getValue(), function(response) {
                            Global.unmask(workspacePanel.getEl());
    
                            if (!response) {
                                showWorkflowMessages([{ Type: 0, Text: 'A timeout occurred while changing the product.  Please try again.'}]);
                                return;
                            }
                            if (response.Data.Result == false) {
                                showWorkflowMessages(response.Data.Messages);
                            } else {
                                Global.mask('Reloading the application');
                                reloadWorkspace();
                            }
                        });
                    }
                    win.subProductId.setValue('');
                });
            }
    
    2 回复  |  直到 11 年前
        1
  •  1
  •   Dennis    11 年前

    这个问题与涉及z索引的某种bug有关。我只是通过添加以下内容来确保z索引比窗口高一点来修复它:

    <style>
        .x-combo-list {z-index: 10000 !important} /* A hack to fix superboxselect dropdowns showing up behind window */
    </style>
    

    不是很漂亮,但很管用。

        2
  •  0
  •   Scott    15 年前

    我在回答我是如何解决这个问题的,但如果你知道一种常见的方法来防止这种情况发生,在它让我接受这个问题之前,请随意发布其他答案。

    我放置

    win.close();
    

    刚好在…之后

    win.subProductId.setValue('');
    

    这样,每次成功保存完成时都会破坏模式,因此它总是作为初始窗口加载(每次都有效)