jqgrid客户端排序描述/asc

jqgrid客户端排序描述/asc,jqgrid,Jqgrid,我在这个问题上看到了很多变化,我尝试使用所有的知识,但仍然没有运气 我的日期是从旧到新排序的,我想从新到旧排序 在你看到的地方,我试过asc,但没有改变 当我尝试分页时,它似乎会触发重新加载,而且排序是正确的,从新到旧 最好的解决方案是将重新加载设置为1秒,然后清除间隔?还是我出了什么问题 我无法对服务器端进行排序,这不是一个选项 $("#transactionList").jqGrid({ url: "/cc/transaction/show/"+accountId,

我在这个问题上看到了很多变化,我尝试使用所有的知识,但仍然没有运气

我的日期是从旧到新排序的,我想从新到旧排序

在你看到的地方,我试过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");
;
$(“#交易列表”).jqGrid({
url:“/cc/transaction/show/”+accountId,
数据类型:“本地”,
自动宽度:正确,
高度:“自动”,
sortname:“交易日期”,
排序器:“desc”,
可排序:是的,
有一次:是的,
viewrecords:是的,
gridview:没错,
第一排序器:“描述”,
colNames:['Date'、'Asset Name'、'Description'、'Amount'、'Actions'],
colModel:[
{name:'tran_date',index:'tran_date',sorttype:'date',sortable:true,formatter:'date',firstsororder:'desc',datefmt:'md,Y',formattoptions:{srcformat:'Y-M-dh:i:s',newformat:'md,Y'},
{name:'assname',index:'assname',sortable:true,resizeable:false},
{name:'description',index:'description',sortable:true,resizeable:false},
{name:'net_proc',index:'net_proc',align:'right',格式化程序:'currency',格式化选项{decimalSeparator:“,”千位分隔符:“,”,decimalPlaces:2,前缀:“$”,默认值:'0.00'},可排序:true,可调整大小:false},{name:'ID',index:'ID',格式化程序:actionsformter,宽度:130,align:“center”,键:true,可调整大小:false}
],
标题:“已完成的交易”,
总行:-1,
rowNum:1000,
行列表:[10,20,30],
寻呼机:“#寻呼机”,
OnSetRow:功能(行id){
},
jsonReader:{
重复项:false,
id:“id”,
userdata:'行'
},
viewrecords:是的,
gridComplete:函数(){
//附加操作事件处理程序
$('span[name=“details”]”)。单击(函数(){
var row_id=this.id;
var数据=$(“#transactionList”).getGridParam('userData');
var数据;
$。每个(数据、函数(索引、el){
如果(el.ID==行ID)
rowData=el;
});
var消息='资产名称:'+rowData.assname+rowData.assname2+'';
消息+='金额:'+rowData.net_proc+';
消息+='事务日期:'+rowData.tran_Date+'';
$.popMessage('交易详情',消息);
}).addToolTip(“详细信息”);
}
})
$(“#transactionList”).setGridParam({datatype:'json'}).trigger(“reloadGrid”);
;

从您发布的代码中不清楚问题的确切根源。在发布的代码中使用
sortname:'tran_date',sortorder:'desc'
,但是
colModel
没有名为
'tran_date'
的列

一般来说,需要了解的是,服务器代码
url:“/cc/transaction/show/”+accountId
必须返回已排序的数据。选项
sortname:'tran_date',sortorder:'desc'
将用于构建将发送到服务器的
sidx
sord
参数的值。因此,服务器必须返回按
sidx
unsing
sord
顺序排序的数据。我想您当前的服务器代码不会这样做

更新:服务器应返回已排序的数据。如果确实不可能,则必须在第一次加载后直接使用数据。要做到这一点,您可以在
loadComplete
callback内部测试您是否在第一次加载数据。第一次加载时,
数据类型的值是原始值
“json”
“xml”
,具体取决于服务器返回的数据格式。稍后
数据类型将更改为
“本地”
。因此,如果
数据类型
选项的值不是
“local”
,则可以触发
“reloadGrid”
。相应的代码可能如下所示

$(“#交易列表”).jqGrid({
url:“/cc/transaction/show/”+accountId,
数据类型:“json”,
rowNum:1,//初始小值
有一次:是的,
loadComplete:函数(){
var$this=$(this);
if($this.jqGrid(“getGridParam”,“datatype”)!=“local”){
setTimeout(函数(){
$this.jqGrid(“setGridParam”,{rowNum:20});//实际值
$this.trigger(“重新加载网格”);
}, 50);
}
},
…//您需要的其他选项
});

Oleg,感谢您的快速响应。我这里有tran_date,只是格式不好。此外,如果我不包括URL,则不会显示任何数据。我无法对服务器端进行排序(说来话长)。@shef:服务器应该返回已排序的数据。如果确实不可能,则必须在第一次加载后直接使用数据。我将用相应的代码示例附加我的答案。非常感谢,这非常有效。我被锁定的系统不允许我在db上执行“排序方式”或“排序方式”,听起来很疯狂。我是否应该假定分页不适用于此配置?谢谢again@shef:不客气!分页确实有效,因为它将由jqGrid在本地实现。因此,您应该只设置所需的
rowNum
的值。如果不需要本地分页,可以将
rowNum
设置为一些较大的值,如
rowNum:1000