使用jqGrid错误消息进行警报

时间:2011-11-10 08:35:01

标签: jqgrid alert jsonreader

我想在加载jqGrid表时发生错误时收到提醒。例如,当jsonReader配置不正确时,例如当repeatitems为true而不是false时,U可以在Firebug中看到错误:

ccur is undefined
[Break On This Error] idr = ccur[idn] || idr; 

如何在警报中放置此类错误?我已经尝试过使用loadError,但它不起作用,因为它甚至没有触发。

1 个答案:

答案 0 :(得分:3)

对我来说,你应该只使用try - catch阻止jqGrid代码:

try {
    // create the grid
    $("#list").jqGrid({
        // all jqGrid options
    });
} catch (err) {
    // display the error message which you want
    alert(err);
}

更新:你是对的,我之前描述的try {...} catch (err) {...}仅在阅读本地数据时在IE中工作。如果从服务器获取数据,则异常发生在success $.ajax的回调中。确切地说,它取决于您使用的数据类型,在addJSONDataaddXmlData内。要捕获异常,您应该在the place中修改jqGrid的代码。修改后的代码可以是以下

success:function(data,st, xhr) {
    if ($.isFunction(ts.p.beforeProcessing)) {
            ts.p.beforeProcessing.call(ts, data, st, xhr);
    }
    try {
        if(dt === "xml") { addXmlData(data,ts.grid.bDiv,rcnt,npage>1,adjust); }
        else { addJSONData(data,ts.grid.bDiv,rcnt,npage>1,adjust); }
        if(lc) { lc.call(ts,data); }
        if (pvis) { ts.grid.populateVisible(); }
    } catch (err) {
        alert(err);
    }
    if( ts.p.loadonce || ts.p.treeGrid) {ts.p.datatype = "local";}
    data=null;
    if (npage === 1) { endReq(); }
}

我在the demo中测试了jquery.jqGrid.src.js的相应修改版本,它显示了错误消息。我没有准确地再现您描述的错误,因此错误消息在您的情况下是另一个。

如果您需要修改后的jquery.jqGrid.src.js文件的最小化版本,您可以使用任何JavaScript最小化器自行生成它。例如,Microsoft Ajax Minifier可以免费下载和安装。用法为

ajaxmin.exe jquery.jqGrid.src.js -out jquery.jqGrid.min.js

将生成jquery.jqGrid.src.js的新的最小化版本,它将比原始的jquery.jqGrid.min.js更小。

另一个优秀的最小化器可在线获取here。您应该只使用“简单”优化。