Оповещение с сообщениями об ошибках jqGrid - PullRequest
1 голос
/ 10 ноября 2011

Я хотел бы получить предупреждение при возникновении ошибок при загрузке моей таблицы jqGrid. Например, когда jsonReader не настроен должным образом, например, когда repeatitems имеет значение true вместо false, U может видеть в Firebug ошибку:

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

Как я могу поместить такую ​​ошибку в предупреждение? Я уже пытался использовать loadError, но он не работает, потому что он даже не срабатывает.

1 Ответ

3 голосов
/ 12 ноября 2011

Мне кажется, что вы должны просто использовать 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.Точнее, это происходит внутри addJSONData или addXmlData в зависимости от типа данных, которые вы используете.Чтобы поймать исключение, вы должны изменить код 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(); }
}

Я тестировал в демо соответствующую модифицированную версию 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.

Еще один хороший минимизатор доступен онлайн здесь .Вы должны использовать только «Простую» оптимизацию.

...