Недавно я широко использовал jqgrid для проекта-прототипа, над которым я работаю в CB Richard Ellis (мой работодатель). Существует множество способов заполнения jqgrid, как отмечено в документации : (см. Узел «получение данных»).
В настоящее время я выполняю сервисный вызов, который возвращает строку json, которая при оценке дает мне объект, который содержит следующее:
- ColumnNames: string []
- ColumnModels: object [] (каждый объект имеет свойства «name», «index» и «sortable»)
- Данные: объект [] (каждый объект имеет свойства, соответствующие именам в модели столбца)
- TotalRows: int
В моем успешном обратном вызове я вручную создаю jqgrid следующим образом: («data» - это объект, который я получаю при оценке возвращенной строки json).
var colNames = data.ColumnNames;
var colModel = data.ColumnModels;
var previewData = data.PreviewData;
var totalRows = data.TotalRows;
var sTargetDiv = userContext[0]; // the target div where I'll create my jqgrid
$("#" + sTargetDiv).html("<table cellpadding='0' cellspacing='0'></table>");
var table = $("#" + sTargetDiv + " > table");
table.jqGrid({
datatype: 'local',
colNames: colNames,
colModel: colModel,
caption: 'Data Preview',
height: '100%',
width: 850,
shrinkToFit: false
});
for (var row = 0; row < previewData.length; ++row)
table.addRowData(row, previewData[row]);
Итак, вы можете видеть, что я вручную заполняю данные. Существует более 1 вида ошибок сервера. Существует логическая ошибка, которую вы можете вернуть как свойство в вашей строке json, и проверьте перед попыткой создать jqgrid (или для каждой строки).
if (data.HasError) ...
или для каждого ряда
for (var row = 0; row < previewData.length; ++row)
{
if (previewData[row].HasError)
// Handle error, display error in row, etc
...
else
table.addRowData(row, previewData[row]);
}
Если ваша ошибка является необработанным исключением на сервере, то вам, вероятно, понадобится обратный вызов ошибки при асинхронном вызове. В этом случае ваш обратный вызов успеха, который (предположительно) создает вашу jqgrid, вообще не будет вызываться.
Это, конечно, относится к заполнению вручную jqgrid, что является лишь одним из многих доступных вариантов. Если у вас есть jqgrid, подключенный непосредственно к вызову службы или функции для извлечения данных, тогда это совсем другое дело.
На странице документации просмотрите раздел Основные сетки> События. Там вы увидите событие «loadError», которое может пригодиться.