У меня jqGrid работает с группировкой. Сортировка и разбиение данных на страницы выполняется на стороне сервера, потому что у меня слишком много строк, поэтому loadonce для меня не вариант. Проблема, с которой я столкнулся, заключается в том, что параметр sidx, переданный серверу, неверен (он также содержит параметр sord и дублированный sidx), поэтому сервер не может найти этот столбец в таблице.
Я понял, если прокомментирую группировку, sord и sidx вернутся в норму.
Это мой код:
jQuery("#grid-destinations").jqGrid({
url:'destinations',
datatype: "json",
colModel:[
{name:'id', hidden:true},
{name:'cliDestination', jsonmap: 'cliDestination.destinationDesc', index: 'cliDestination', label:'Destination', width:55},
{name:'orgSub', jsonmap: 'orgSub.subscriptionId', label:'Client', width:55, summaryTpl:''},
{name:'numCalls', label:'Calls', width:55, formatter:'number', summaryType:'sum'},
{name:'orgSeconds', label:'Client Minutes', width:55, formatter:'number', summaryType:'sum'},
{name:'aloc', label:'ALOC', width:55, formatter: 'number', summaryType:'avg', summaryRound: 2, summaryRoundType:'round'},
{name:'currency', jsonmap: 'orgSub.btsAccount.accountCurrency.currencySymbol', label:'Currency', width:55, summaryTpl:''},
{name:'saleRate', label:'Sell rate', width:55, summaryType:'avg', summaryRound: 4, summaryRoundType:'round'},
{name:'income', label:'Income', width:55, summaryType:'sum'},
{name:'purchaseRate', label:'Cost rate', width:55, summaryType:'avg', summaryRound: 4, summaryRoundType:'round'},
{name:'cost', label:'Cost', width:55, summaryType:'sum'},
{name:'profit', label:'Profit', width:55, summaryType:'sum'},
{name:'percentageProfitIncome', label:'%Prof/Income', width:55, summaryType:'avg', summaryRound: 2, summaryRoundType:'round'}
],
autowidth: true,
gridview: true,
viewrecords: true,
sortname: "cliDestination",
sortorder: "asc",
rowNum:100,
rowList:['All','100','500','1000'],
pager: '#pager-destinations',
emptyrecords: "Nothing found to display",
jsonReader: {
root: 'content',
id: 'id',
repeatitems: false,
total: 'totalPages',
records: 'totalElements'
},
// grouping
grouping:true,
groupingView : {
groupField : ['cliDestination'],
groupCollapse: true,
groupSummary: true,
groupSummaryPos: "header"
}
}).jqGrid('navGrid','#pager-destinations', {
edit: false,
view: false,
add: false,
del: false
},
{ }, // edit options
{ },// add options
{ },// del options
{ }, // search options
{ } // view options
).jqGrid('setGridHeight', $("#page").height() - 175);
}
Группирую данные по cliDestination. cliDestination - это еще один объект с идентификатором и описанием, поэтому в таблице я вижу описание из-за свойства jsonmap. Я хочу, чтобы данные также упорядочивались с помощью cliDestination.destinationDesc.
Это отправляет на сервер параметр sidx как «cliDestination asc, cliDestination» и sord как «asc». Когда я комментирую конфигурацию группировки, sidx - это cliDestination, а sord - asc, как и должно быть.
Есть идеи, что здесь происходит?
Спасибо