1

列ヘッダーをクリックするたびに 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');

それは私のjqgridをソートできないJavaScriptの私のコードです...私のprocess.phpコード:

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

jqgrid へのデータのロードに問題はありません。唯一の問題は、降順で並べ替えることができないことです。列ヘッダーをクリックするたびに、昇順でのみソートされ、もう一度クリックしても降順は起こりません。どうしたの?

4

3 に答える 3

1

次のように、必要なフィールドの colModel で sortable : trueを使用する必要があります。

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

これで、正しくソートできるはずです。

于 2011-09-29T11:06:25.293 に答える
0

サーバーからのデータを使用する場合、すぐに使用できるデータ (順序付けされたものとページ付けされたものの両方) を提供する必要があります。

これを行うために、jqgridは、列の名前と順序 (降順の場合は「desc」) を含む変数sidxと をリクエストで送信します。sord

詳細なヘルプと PHP の例については、チュートリアルを参照してください。

于 2011-03-15T09:28:03.397 に答える