У меня есть эта jqGrid:
$("#report").jqGrid( {
url: '/py/db?coll=report',
datatype: 'json',
height: 250,
colNames: ['ACN', 'Status', 'Amount'],
colModel: [ {name:'acn', sortable:true},
{name:'meta.status', sortable:true},
{name:'amount'} ],
caption: 'Show Report',
rownumbers: true,
gridview: true,
rowNum: 10,
rowList: [10,20,30],
pager: '#report_pager',
viewrecords: true,
sortname: 'acn',
sortorder: "desc",
altRows: true,
loadonce: true,
mtype: "GET",
rowTotal: 1000,
jsonReader: {
root: "rows",
page: "page",
total: "total",
records: "records",
repeatitems: false,
id: "acn"
}
});
Обратите внимание, что столбец meta.status находится в точечной нотации JSON и, соответственно, данные, отправленные с сервера, выглядят так:
{"page": "1", "total": "1", "records": "5", "rows": [
{"acn":1,"meta": {"status":"Confirmed"}, "amount": 50},
{"acn":2,"meta": {"status":"Started"}, "amount": 51},
{"acn":3,"meta": {"status":"Stopped"}, "amount": 52},
{"acn":4,"meta": {"status":"Working"}, "amount": 53},
{"acn":5,"meta": {"status":"Started"}, "amount": 54} ] }
Проблемы в два раза:
- Сортировка не работает для столбцов с точечной нотацией, здесь "meta.status". Он даже не отображает сортируемые значки в заголовке столбца, и ничего не происходит, даже если щелкнуть заголовок. Сортировка не работает, независимо от того, является ли loadonce истинным или ложным.
- Если я попытаюсь найти (после установки loadonce значение true) для столбца meta.status (другие столбцы без точечной нотации в порядке), то он выдаст ошибку javascript, подобную этой.