0

我正在研究 jqgrid。

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

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

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

我在这里准备了一个jsfiddle :http : //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);
    }

});

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

4

2 回答 2

1

我不认为 jqGrid 中有本机功能来做你想要实现的。我会去使用 BlockUi 插件:http: //jquery.malsup.com/block

在这里演示

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

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

 $("#list47").closest('.ui-jqgrid').unblock();
于 2013-01-04T15:28:05.830 回答
0

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

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

它看起来不太好,但可以定制。

于 2014-03-04T11:08:37.697 回答