Почему я не могу сортировать свою сетку в jqgrid каждый раз, когда нажимаю на заголовок столбца? - PullRequest
1 голос
/ 15 марта 2011

Я был действительно смущен, что моя программа, использующая jqgrid, не будет сортировать (убывать) каждый раз, когда я нажимаю на заголовок столбца? Я попытался создать программу, в которой я использую локальные данные (данные .json), и она отлично работает при сортировке, когда я щелкаю заголовок столбца. Так в чем же проблема с первым? Я использую данные с клиентского сервера ....

Вот мой код JavaScript:

  $("#btnQueryMainAccountGroups").click( function() {
    var params = {
      "SessionID": $("#eSessionID3").val(),
      "dataType": "data"
    }
    $('#tblData').setGridParam({
      url:'process.php?path=' + encodeURI('masterData/data') + '&json=' + encodeURI(JSON.stringify(params)), 
      datatype: olSettings.ajaxDataType,  
    });
    $('#tblData').trigger('reloadGrid');
    }); 

    $("#tblData").jqGrid({
    url: '',
    datatype: '',
    jsonReader : {
      root: function(obj) {
        var root = [];

    if  ('error' in obj) 
    {
      showMessage(obj.error['class'] + ' error: ' + obj['error']['msg']);
    }
    else
    {
      $.each(obj['result']['main']['rowdata'], function(rowIndex, rowDataValue) {
        var row = {};
        $.each(rowDataValue, function(columnIndex, rowArrayValue) {
          var fldName = obj['result']['main']['metadata']['fields'][columnIndex].name;
          row[fldName] = rowArrayValue;                
        });
        root[rowIndex] = row;
      });
    };
    return root;
  },
  page: "result.main.page",
  total: "result.main.pageCount",
  records: "result.main.rows",
  repeatitems: false,
  id: "0"
},
serializeGridData: function(postData) {
  var jsonParams = {
    'SessionID': $('#eSessionID3').val(),
    'dataType': 'data',
    'recordLimit': postData.rows,
    'recordOffset': postData.rows * (postData.page - 1),
    'rowDataAsObjects': false,
    'queryRowCount': true,
    'sort_fields': postData.sidx
  };

  return 'json=' + JSON.stringify(jsonParams);
},

},
colNames:['ID','Code', 'Description','Type'],
colModel:[
  {name:'group_id'},
  {name:'group_code',align:'center',width:100},
  {name:'group_desc'},
  {name:'type'}
],

viewrecords: true,
rowList:[5,10,50,100],
pager: '#tblDataPager',
sortname: 'group_desc',
sortorder: 'asc',
rowNum:5,
loadonce:false,
caption: "MainGroup"
});

$("#tblData").setGridWidth($(window).width() - 70);
$("#tblData").jqGrid('sortableRows');

это мой код в javascript, где я не могу отсортировать свой jqgrid ... мой код process.php:

 <?php 
     print(file_get_contents("http://localhost/" .... "?json=" . $_GET["json"]));
 ?>

Нет проблем при загрузке данных в jqgrid. Единственная проблема в том, что я не могу отсортировать их в порядке убывания. Каждый раз, когда я щелкаю по заголовку столбца, он сортирует только по возрастанию, а если я нажимаю снова, по убыванию не происходит. В чем проблема?

Ответы [ 3 ]

1 голос
/ 29 сентября 2011

Вы должны использовать sortable: true в colModel ваших обязательных полей следующим образом:

colModel:[
 {name:'group_id', sortable: true},
 {name:'group_code',align:'center',width:100, sortable: true},
 {name:'group_desc', sortable: true},
 {name:'type', sortable: true}
],

Теперь вы должны иметь возможность правильно сортировать.

0 голосов
/ 08 февраля 2016

Попробуйте использовать loadonce:true; , Вы используете loadonce: false .

Здесь написано ,

If this flag is set to true, the grid loads the data from the server only once (using the appropriate datatype). After the first request, the datatype parameter is automatically changed to local and all further manipulations are done on the client side. The functions of the pager (if present) are disabled.

0 голосов
/ 15 марта 2011

При использовании данных с сервера вы должны предоставить готовые к использованию данные: как упорядоченные, так и разбитые на страницы.

Для этого jqgrid отправляет в запросе переменные sidx и sord, содержащиеимя столбца и порядок ('desc' для убывания).

См. учебник для получения дополнительной справки и примера PHP.

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