Сортировка jqgrid по умолчанию для определенного поля при загрузке сетки - PullRequest
1 голос
/ 14 ноября 2011

Я хочу загрузить сетку с сортировкой по умолчанию на одном из полей. Я сделал это, добавив sortname и sortorder в свою сетку, но когда сетка загружена, в заголовке этого поля отображается знак сортировки. Но записи сортируются, когда я нажимаю кнопку «Следующая страница», а не при загрузке сетки.

Кто-нибудь знает, почему это не сортировка по загрузке сетки?

@ UPDATE: Привет, Kees, я использую свой тип данных в качестве XML и мой конфиг. выглядит следующим образом:

jQuery("#userList").jqGrid({
    url: '<%=request.getContextPath()%>/userJqGrid?q=1&action=fetchData&userCookie=<%= encodedCookie%>',
    datatype: 'xml',
    mtype: 'GET',
    colNames:['<%= userProp.getProperty(userColNames[0])%>',
              '<%= userProp.getProperty(userColNames[1])%>',
              '<%= userProp.getProperty(userColNames[2])%>',
              '<%= userProp.getProperty(userColNames[3])%>',
              '<%= userProp.getProperty(userColNames[4])%>',
              '<%= userProp.getProperty(userColNames[5])%>'
    ],
    colModel:[
        {name:'<%= userColNames[0]%>',index:'<%= userColNames[0]%>',
            width:120,sortable:true,editable:true,editrules:{required:true},formoptions:{rowpos:1, elmprefix:'*'}},
        {name:'<%= userColNames[1]%>',index:'<%= userColNames[1]%>',
            width:130,sortable:true,editable:true},
        {name:'<%= userColNames[2]%>',index:'<%= userColNames[2]%>',
            width:100,sortable:true,editable:true,editrules:{required:true},formoptions:{rowpos:3, elmprefix:'*'}},
        {name:'<%= userColNames[3]%>',index:'<%= userColNames[3]%>',
            width:180,sortable:true,editable:true,editrules:{email:true,required:true},formoptions:{rowpos:4, elmprefix:'*'}},
        {name:'<%= userColNames[4]%>',index:'<%= userColNames[4]%>',
            width:100,sortable:true,editable:true},
        {name:'<%= userColNames[5]%>',index:'<%= userColNames[5]%>',
            width:100,sortable:true,editable:true},
    ],
    pager:'#pager1',
    rowNum:'<%=appProp.getProperty("per_page_records")%>',
    height:'auto',
    viewrecords:true,
    loadonce:true,
    sortable:true,
    width:'100%',
    gridview: true,
    autowidth:true,
    shrinkToFit:false,
    ignoreCase:true,
    editurl:'<%=request.getContextPath()%>/userJqGrid?q=1&action=addData&userCookie=<%=encodedCookie%>',
    caption: 'User Records',
    sortname:'<%=userColNames[14]%>',
    sortorder:'asc',
    onSelectRow: function (id){
        checkAndSetCookie();
    },
    onSortCol : function(){
        checkAndSetCookie();
    },
    onPaging : function(){
        checkAndSetCookie();
    },
    onSearch : function(){
        checkAndSetCookie();
    },
    loadComplete: function(){
        checkAndSetCookie();
    }
});

1 Ответ

5 голосов
/ 14 ноября 2011

Если вы используете удаленный datatype (datatype: 'xml' или datatype: 'json') , сервер отвечает за сортировку данных при первой загрузке.Если вы используете loadonce: true и хотите отсортировать данные только на стороне клиента , вам необходимо перезагрузить jqGrid сразу после первой загрузки.Соответствующий код может быть примерно следующим* вариант.Опция forceClientSorting: true принудительная сортировка и фильтрация на стороне клиента.Это делает код, описанный в ответе, ненужным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...