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

jqgrid触发器“正在加载…”覆盖

  •  13
  • gurun8  · 技术社区  · 14 年前

    是否有人知道如何触发在加载网格时显示的库存jqgrid“加载…”覆盖?我知道我可以不费吹灰之力地使用jquery插件,但我希望能够保持我的应用程序的外观与jqgrid中已经使用的外观一致。

    我发现关闭的东西是:

    jqGrid display default "loading" message when updating a table / on custom update

    • N8
    8 回复  |  直到 9 年前
        1
  •  17
  •   Alireza Fattahi    10 年前

    如果你在找类似的东西 DisplayLoadingMessage() 功能。它在jqgrid中不存在。您只能设置 加载用户界面 JQ电网选择 使可能 (默认值) 使残废 . 我个人更喜欢 . (见 http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options )但我认为这不是你想要的。

    如果您喜欢jqgrid中的“正在加载…”消息,您唯一能做的就是创建相同的消息。我将在这里解释jqgrid如何显示此消息:将创建两个隐藏的div。如果您有一个id=list的网格,那么这个div将如下所示:

    <div style="display: none" id="lui_list"
         class="ui-widget-overlay jqgrid-overlay"></div>
    <div style="display: none" id="load_list"
         class="loading ui-state-default ui-state-active">Loading...</div>
    

    文本“loading…”或“l_·dt…”(德语)来自 $.jgrid.defaults.loadtext . div的id将由“lui_uuu”或“load_uu”前缀和网格id(“list”)构成。在发送Ajax请求之前,jqgrid使其中一个或两个div可见。它调用 jQuery.show() 如果 加载用户界面 选项是 使可能 . 如果 加载用户界面 选项是 但是,两个div(id=“lui_list”和id=“load_list”)都将显示 .show() 功能。在Ajax请求结束后 .hide() 将为一个或两个div调用jquery函数。就这些。

    您将在中找到所有CSS类的定义 ui.jqgrid.css jquery-ui-1.8.custom.css .

    现在您有足够的信息来重现jqgrid的“正在加载…”消息,但是如果我是您,我会再一次考虑您是真的想这样做,还是 jQuery blockUI plugin 更符合你的目标。

        2
  •  7
  •   dr0zd    11 年前

    我用

            $('.loading').show();
            $('.loading').hide();
    

    它可以在不创建任何新的div的情况下正常工作

        3
  •  3
  •   Justin Levene    9 年前

    简单,展示它:

    $("#myGrid").closest(".ui-jqgrid").find('.loading').show();
    

    然后再藏起来

    $("#myGrid").closest(".ui-jqgrid").find('.loading').hide();
    
        4
  •  2
  •   R Kumar    11 年前

    我刚把线放在下面 OnElectrow公司 JQ网格事件,它起作用了。

    $('.loading').show();

        5
  •  1
  •   Joel E    14 年前

    要覆盖的样式是[.ui jqgrid.loading]。

        6
  •  0
  •   Chris Kemp    12 年前

    您可以调用$(“load_uu”).show()和.hide(),其中是网格的ID。

        7
  •  0
  •   Anand    11 年前

    它正在使用$('div.loading').show()创建世界; 这对其他组件也很有用

    $('#editDiv').dialog({
                modal : true,
                width : 'auto',
                height : 'auto',
                buttons : {
                    Ok : function() {
                        //Call Action to read wo and 
                         **$('div.loading').show();**
    
                        var status = call(...)
                        if(status){
                            $.ajax({
                                type : "POST",
                                url : "./test",
                                data : {
                                    ...
                                },
                                async : false,
                                success : function(data) {
    
                                    retVal = true;
                                },
                                error : function(xhr, status) {
    
    
                                    retVal = false;
                                }
                            });
                        }
                        if (retVal == true) {
                            retVal = true;
                            $(this).dialog('close');
                        }
                        **$('div.loading').hide();**
                    },
                    Cancel : function() {
                        retVal = false;
                        $(this).dialog('close');
                    }
    
                }
            });
    
        8
  •  0
  •   Alireza Fattahi    10 年前

    如@oleg所述 jQuery Block UI 在开发Ajax基础应用程序的过程中有很多好的特性。使用它,您可以阻塞整个UI或一个名为 element Block

    对于jqgrid,可以将网格放在一个DIV(samplegrid)中,然后将网格阻塞为:

    $.extend($.jgrid.defaults, {
        ajaxGridOptions : {
            beforeSend: function(xhr) {
                $("#sampleGrid").block();
            },
            complete: function(xhr) {
                $("#sampleGrid").unblock();
            },
            error: function(jqXHR, textStatus, errorThrown) {
                $("#sampleGrid").unblock();
            }
        }
    });