如何禁用/冻结jqgrid?

时间:2013-01-04 15:17:49

标签: jquery jqgrid

我正在研究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);
    }

});

这是否有内置功能?请帮我解决这个问题。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

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

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

看起来不太好,但可以自定义。