2012-06-20 44 views
0

我无法让列按“名称”值以外的索引进行排序。在这种情况下,我尝试按星期顺序排序聚合类型列(值是一周中的几天),而不是字母数字顺序。为此,我添加了一个索引列('Aggregation type-in​​dex'),该列的星期几为整数。但是,使用此配置时,它无法按索引或名称对该列进行排序。有人能以我的方式指出我的错误吗?jqGrid:按索引排序

我发布了页面上的所有js和css,因为我还有其他两个问题,如果您注意到问题很大,否则我会继续打猎。我希望能够启用列重新编码并能够调整网格大小(两者均显示在http://trirand.com/blog/jqgrid/jqgrid.html下3.6新标签下)。这两个选项都不起作用。

<link rel="stylesheet" type="text/css" href="/static/latest_ui/themes/base/jquery.ui.all.css"/> 
<link rel="stylesheet" type="text/css" media="print" href="/static/css/print.css"/> 


<script src="/static/js/jquery-1.7.2.min.js" type="text/javascript"></script> 
<script src="/static/latest_ui/ui/jquery.ui.core.js"></script> 
<script src="/static/latest_ui/ui/jquery.ui.widget.js"></script> 
<script src="/static/latest_ui/ui/jquery.ui.position.js"></script> 
<script src="/static/latest_ui/ui/jquery.ui.button.js"></script> 
<script src="/static/latest_ui/ui/jquery.ui.menu.js"></script> 
<script src="/static/latest_ui/ui/jquery.ui.menubar.js"></script> 
<script src="/static/latest_ui/ui/jquery.ui.tabs.js"></script> 
<script src="/static/latest_ui/ui/jquery.ui.datepicker.js"></script> 
<script src="/static/js/custom.js"></script> 



<link rel="stylesheet" type="text/css" media="all" href="/static/css/custom_style.css" /> 
<link rel="stylesheet" type="text/css" media="all" href="/static/css/custom_colors.css" /> 
<link rel="stylesheet" type="text/css" media="screen" href="/static/css/ui.jqgrid.css" /> 

<body> 
<table id="grid_reports"></table> 
<div id='pager'></div> 
</body> 

<script src="/static/latest_ui/ui/jquery.ui.resizable.js"></script> 
<script src="/static/latest_ui/ui/jquery.ui.sortable.js"></script> 
<script src="/static/js/grid.locale-en.js" type="text/javascript"></script> 
<script src="/static/js/jquery.jqGrid.min.js" type="text/javascript"></script> 
<script src="/static/js/jqGrid_src/grid.jqueryui.js"></script> 

<script> 
$(function() { 
jQuery("#grid_reports").jqGrid({ 
sortable: true, 
datatype: "local", 
height: 500, 
width: 300, 
colNames:['Series', 'Agg Type', 'Days'], 
colModel:[{'index': 'By series', 'align': 'left', 'sorttype': 'text', 'name': 'By series', 'width': 65}, {'index': 'Aggregation type-index', 'align': 'left', 'sorttype': 'int', 'name': 'Aggregation type', 'width': 75}, {'index': 'Days since event', 'align': 'center', 'sorttype': 'text', 'name': 'Days since event', 'width': 50}], 

rowNum:50, 
pager: '#pager', 
sortname: 'Aggregation type',  
sortorder: 'desc', 
altRows: true,                
rowList:[20,50,100,500,10000], 
viewrecords: true, 
gridview: true, 
caption: "Report for 6/19/12"    
}); 
jQuery("#grid_reports").navGrid("#pager",{edit:false,add:false,del:false}); 
jQuery("#grid_reports").jqGrid('gridResize',{minWidth:60,maxWidth:2500,minHeight:80, maxHeight:2500}); 

var mydata = [{'Days since event': 132, 'Aggregation type': 'Date=Fri', 'By series': 'mean', 'Aggregation type-index': 5}, {'DIM at event': 178, 'Aggregation type': 'Date=Thu', 'By series': 'mean', 'Aggregation type-index': 4}, {'DIM at event': 172, 'Aggregation type': 'Date=Wed', 'By series': 'mean', 'Aggregation type-index': 3}, {'DIM at event': 146, 'Aggregation type': 'Date=Tue', 'By series': 'mean', 'Aggregation type-index': 2}, {'DIM at event': 132, 'Aggregation type': 'Date=Sat', 'By series': 'mean', 'Aggregation type-index': 6}, {'DIM at event': 162, 'Aggregation type': 'Date=Mon', 'By series': 'mean', 'Aggregation type-index': 1}, {'DIM at event': 139, 'Aggregation type': 'Date=Sun', 'By series': 'mean', 'Aggregation type-index': 0}]; 
for(var i=0;i<=mydata.length;i++) 
jQuery("#grid_reports").jqGrid('addRowData',i+1,mydata[i]); 
}); 

</script> 

回答

1

你必须在代码中的一些问题:

  • 你应该使用nameindex特性,这没有空格或元字符(见here)。例如,您可以在'Aggregation_type'中重命名列名'Aggregation type'
  • 只能在远程数据情况下使用不同的值进行nameindex特性(的datatype: "json"datatype: "xml"情况)。
  • 对于addRowData,您不应填写网格。这是我知道的最慢的方式。在代码顶部移动mydata的定义(在创建网格之前),在阵列的每个项目中包含附加属性id,并使用jqGrid的data: mydata选项更好也更容易。在网格将与数据一起创建的情况下,数据将被排序并显示第一页数据。
  • ,如果你需要实现任何自定义排序可以定义列的sorttype财产功能而不是默认'text'(见例如herehere)。例如,该函数可以为'Date=Fri'值返回4,并返回5为'Date=Sat'。然后,您可以根据需要实施精确的自定义排序。
+0

感谢您提供的所有提示,我刚开始使用jqGrid,并且对它的所有功能和细微差别有相当的了解。 –

+0

@David__:不客气! – Oleg