Jqgrid auto sorts data by a grouped column, how can this be disabled?

I have a grouped jqgrid, however the data returned from the server is already grouped, I just want to apply the jqgrid grouping view to the data. I included jsfiddle as the picture says 1000 words. DATA INCLUDED IN FIDDLE ...

Link to the fiddle: http://jsfiddle.net/Rab815/p8Zsk/

$('table').jqGrid({
    data: data,
    datatype: "local",
    rowNum:100,
    gridview: true,
    deepempty: true, 
    hoverrows: false, 
    headertitles: true,
    height:'600px',
    viewrecords:true,
    hoverrows: true,
    sortable: true,
    altRows: true,
    colModel: [
        { label: "Group Name", name:'groupName', field:"groupName", sortable:false},
        { label: 'Name', field: 'name', name:'name' },
        {
            label: 'Date Modified', field: 'lastGenerated', name:'lastGenerated'
        }
    ],
    grouping:true,
    groupingView:
        {
            groupField: ['groupName'],
            groupColumnShow: [true], 
            groupCollapse: true,
        },
    shrinkToFit: false
});

enter image description here

However, I need it to appear in that order

enter image description here

Now, if you put the data in the editor so that each block is displayed on one line, the data is already returned grouped from the database in the order in which I want it to appear. but the grid sorts the groupName data field in asc order, and as far as I can tell, it cannot be disabled.

groupColumnShow: [false]

FIDDLE...

groupOrder

, , .

ColModel GroupName

{
    label: "Group Name", field: "groupName",
    sorttype: function (cellValue, obj) {
                    return obj.groupOrder;
                    //return groupOrder[obj.groupId];
}

. , "asc" jqgrid, , .

! !

+4
1

, datatype: "local" , .

, sorttype "groupName", . , . , , , groupOrder

sorttype: function (cellValue, obj) {
    return groupOrder[obj.groupId];
}

.

groupId . ,

var groupOrder = {}, i, l = data.length, groupId, groupIndex = 1;

for (i = 0; i < l; i++) {
    groupId = data[i].groupId;
    if (groupOrder[groupId] === undefined) {
        groupOrder[groupId] = groupIndex++;
    }
}

groupOrder , ( data[i].groupName data[i].groupId ). groupOrder,

sorttype: function (cellValue, obj) {
    return groupOrder[obj.groupId];
}

http://jsfiddle.net/p8Zsk/38/ .

+3

Source: https://habr.com/ru/post/1523370/


All Articles