2

私はこの問題について多くのバリエーションを見てきました。すべての知識を使用しようとしましたが、まだ運がありません。

私の日付は古いものから新しいものへと並べ替えられていますが、新しいものから古いものへと並べ替えたいと考えています。

desc が表示されている場所で、asc を試しましたが、変化はありません。

ページングを試してみると、リロードがトリガーされたようで、新しいものから古いものへと正しく並べ替えられています。

リロードを 1 秒間設定し、間隔をクリアする最適なソリューションはありますか? それとも、他に何か問題がありますか?

サーバー側でソートできません。それはオプションではありません。

    $("#transactionList").jqGrid({
       url: "/cc/transaction/show/"+accountId,
       datatype: "local",
       autowidth: true,
       height: 'auto',
       sortname: 'tran_date',
       sortorder: 'desc',
       sortable:true,
       loadonce:true,
       viewrecords: true,
       gridview: true,
       firstsortorder: 'desc',
       colNames:['Date','Asset Name','Description','Amount','Actions'],
       colModel:[
 {name:'tran_date',index:'tran_date',sorttype:'date',sortable:true,formatter:'date',firstsororder: 'desc',datefmt: 'M d,Y',formatoptions: {srcformat:'Y-m-d H:i:s',newformat:'M d,Y'}},
{name:'assname',index:'assname',sortable:true,resizable:false},
{name:'desccription',index:'desccription',sortable:true,resizable:false},
{name:'net_proc', index:'net_proc',align:'right',formatter:'currency',formatoptions{decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, prefix: "$", defaultValue:'0.00'}, sortable:true,resizable:false},   {name:'ID',index:'ID',formatter:actionsFormatter,width:130,align:"center",key:true,resizable:false}
      ],
      caption: "Completed Transactions",
      rowTotal: -1,
      rowNum: 1000,
      rowList: [10,20,30],
      pager: '#pager',
      onSelectRow: function(row_id) {
      },
      jsonReader: {
          repeatitems: false,
          id: "ID",
          userdata: 'rows'
      },
      viewrecords: true,
      gridComplete: function() {
      //Attach action event handlers
      $('span[name="details"]').click(function() {
      var row_id = this.id;
      var data = $("#transactionList").getGridParam('userData');
      var rowData;

      $.each(data, function(index,el){
        if(el.ID==row_id)
            rowData = el;
        });

      var message = '<div class="sectionItem"><span class="label">Asset Name:&nbsp;&nbsp;</span><span class="value">'+rowData.assname+rowData.assname2+'</span></div>';
      message += '<div class="sectionItem"><span class="label">Amount:&nbsp;&nbsp;</span><span class="value">'+rowData.net_proc+'</span></div>';
      message += '<div class="sectionItem"><span class="label">Transaction Date:&nbsp;&nbsp;</span><span class="value">'+rowData.tran_date+'</span></div>';
      $.popMessage('Transactions Details', message);
      }).addToolTip('Details');
    }
})
    $("#transactionList").setGridParam({datatype: 'json'}).trigger("reloadGrid");
;
4

1 に答える 1

1

問題の正確な原因は、投稿したコードからは明らかではありません。sortname: 'tran_date', sortorder: 'desc'投稿されたコードで使用しcolModelますが、名前の列がありません'tran_date'

一般に、サーバー コードは並べ替えられたデータurl: "/cc/transaction/show/"+accountIdを返す必要があることを理解することが重要です。オプションは、サーバーに送信されるおよびパラメータの値を構築するために使用されます。したがって、サーバーはunsing順でソートされたデータを返す必要があります。あなたの現在のサーバーコードはこれをしていないと思います。sortname: 'tran_date', sortorder: 'desc'sidxsordsidxsord

UPDATE : サーバーはソートされたデータを返す必要があります。本当に不可能な場合は、最初のロードの直後にデータを再ソートする必要があります。これを行うには、最初loadCompleteにデータをロードするかどうかをコールバック内でテストできます。最初のロードでは、値は元の値であるか、サーバーから返されたデータの形式に依存します。後に に変更されます。したがって、オプションの値がそうでない場合は、トリガーできます。対応するコードは以下のようになりますdatatype"json""xml"datatype"local"datatype"local""reloadGrid"

$("#transactionList").jqGrid({
    url: "/cc/transaction/show/" + accountId,
    datatype: "json",
    rowNum: 1, // initial small value
    loadonce: true,
    loadComplete: function () {
        var $this = $(this);
        if ($this.jqGrid("getGridParam", "datatype") !== "local") {
            setTimeout(function () {
                $this.jqGrid("setGridParam", { rowNum: 20 }); // the real value
                $this.trigger("reloadGrid");
            }, 50);
        }
    },
    ... // other options which you need
});
于 2012-12-03T08:39:57.423 に答える