【问题标题】:How to disable / freeze out jqgrid?如何禁用/冻结jqgrid?
【发布时间】:2013-01-04 15:17:48
【问题描述】:

我正在研究 jqgrid。

我有一个要求,在 jqgrid 的其中一列中我有一个按钮,单击该按钮会进行一些更新。

现在我想要的是,当单击该按钮并且直到更新操作(ajax 调用)正在进行时,我想禁用/冻结整个 jqgrid。

我想禁用 jqgrid,即用户不应该能够选择 jqgrid 上的任何内容,包括其他按钮、寻呼框、寻呼按钮、排序按钮等...

我准备了一个jsfiddle herehttp://jsfiddle.net/yrshaikh/9WhdS/,如果您在回答这个问题时觉得它有用,请使用它。

jQuery("#list47").jqGrid({
    data: mydata,
    datatype: "local",
    height: 150,
    rowNum: 999999,
    scroll: true,
    colNames: ['Inv No','Notes'],
    colModel: [
        {
        name: 'id',
        index: 'id',
        width: 60,
        sorttype: "int"},
    {
        name: 'note',
        formatter: function(){
            return "<input type='button' value='update something' class='btn'/>";
        }}
    ],
    pager: "#plist47",
    viewrecords: true,
    multiselect: true,
    caption: "how to freeze out jqgrid ?",
    beforeSelectRow: function(rowid, e)
    {
        jQuery("#list47").jqGrid('resetSelection');
        return(true);
    }

});

是否有任何内置函数可以这样做?请帮我解决这个问题。

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    我认为 jqGrid 中没有本机功能可以完成您想要实现的目标。我会去使用 BlockUi 插件:http://jquery.malsup.com/block

    DEMO HERE

    $(".btn").click(function(){
        $("#list47").closest('.ui-jqgrid').block({ 
                    message: '<h1>Processing</h1>', 
                    css: { border: '3px solid #a00' } 
                });
    });
    

    然后在你的ajax请求完成后调用这段代码:

     $("#list47").closest('.ui-jqgrid').unblock();
    

    【讨论】:

    • 看起来棒极了!现在就试试吧。
    【解决方案2】:

    尝试使用$("#lui_" + myGridId).show()

    网格在内部创建了此叠加层,并将其用作加载器消息的一部分。您可以只显示或隐藏它,它会为您禁用/启用网格。

    看起来不是很好,但可以定制。

    【讨论】:

      猜你喜欢
      • 2011-06-02
      • 1970-01-01
      • 2017-09-06
      • 2015-07-30
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      相关资源
      最近更新 更多