触发重载后jqGrid没有排序

时间:2010-11-09 04:17:31

标签: jquery jqgrid

我有一个具有以下定义的网格。一切都和网格一样正常。

$("#grid").jqGrid({
    url:'report_data.php',
    datatype: 'json',
    mtype: 'POST',
    colNames:['Type','Term','Number','Visits','Calls','Unique','Avg. Duration',
              'Conversion Rate'],
    colModel :[{"index":"keyword_type","name":"Type","width":90},
               {"index":"keyword","name":"Term","width":170},
               {"index":"phone_number","name":"Number","width":100},
               {"index":"visits","name":"Visits","width":80},
               {"index":"calls","name":"Calls","width":70},
               {"index":"unique_calls","name":"Unique","width":70},
               {"index":"avg_duration","name":"Avg. Duration"},
               {"index":"conversion_rate","name":"Conversion Rate","width":80}],
    rowNum:100,
    rowList:[25,50,100,200,500],
    sortname: 'keyword_type',
    sortorder: 'desc',
    viewrecords: true,
    height: '470px',
    width: 'auto',
    loadui: 'block',
    postData: {"keyword_set":"140","display_type":"direct"}
});

页面上有链接过滤网格。当用户单击链接时,我设置了一些网格参数并使用以下方法重新加载网格:

var param_string = "filter=keyword&type=ppc";
$('#grid').setGridParam({url:'report_data.php',
                         postData:param_string}).trigger("reloadGrid"); 

网格使用新数据重新加载,但是,列不再可排序。我可以看到数据被发送到服务器,但它不再包含'sidx'或'sord'参数。在触发重新加载之前,排序工作正常。

有关如何在重新加载网格后再次传递排序参数的任何想法?

谢谢, 丹

1 个答案:

答案 0 :(得分:2)

您应该使用另一种语法作为postData参数:

$('#grid').setGridParam({url:'report_data.php',
                         postData:{filter:"keyword",type:"ppc"}
                        }).trigger("reloadGrid");

您当前的语法postData:"filter=keyword&type=ppc" 覆盖所有其他参数(pagerowssidxsord等等)并且服务器无法正确排序数据。