Jquery jqGrid分组在chrome中不适用于多列
我在应用程序中使用jqgrid。我从jsp页面中的json数据集中找到它的本地。我希望我的数据集按年度和月份分组。对于sort by month,我使用了一个字段monthno numeric来避免字母排序。它在firefox中工作得很好,但在chrome中却不行。附加了chrome浏览器的屏幕截图。我使用的是jqGrid版本5.0.0。以下是我的网格代码Jquery jqGrid分组在chrome中不适用于多列,jquery,google-chrome,jqgrid,Jquery,Google Chrome,Jqgrid,我在应用程序中使用jqgrid。我从jsp页面中的json数据集中找到它的本地。我希望我的数据集按年度和月份分组。对于sort by month,我使用了一个字段monthno numeric来避免字母排序。它在firefox中工作得很好,但在chrome中却不行。附加了chrome浏览器的屏幕截图。我使用的是jqGrid版本5.0.0。以下是我的网格代码 $("#doctorChart").jqGrid({ data: mydata, datatype: "local",
$("#doctorChart").jqGrid({
data: mydata,
datatype: "local",
height: 'auto',
width: 'auto',
pager: '#psingle',
rowNum: 60,
//sortable :true,
//to hide pager buttons
pgbuttons:false,
recordtext:'',
pgtext:'',
colNames:['Year', 'Month', 'Doctor Name','Pharmacy<br>Revenue', 'Diagnostic<br>Revenue', 'OP Revenue', 'IP Revenue', 'Package<br>Revenue', 'Total<br>Revenue'],
colModel:[ {name:'year',index:'year', width:80, sorttype:"int",sortable:false},
{name:'month',index:'month', width:80,sorttype:function(cell){ return cell.monthno}},
{name:'doctorname',index:'doctorname',width:165,sortable:false},
{name:'pharmacyRevenue',index:'pharmacyRevenue', width:100, align:"right",sorttype:"float", formatter:"number", summaryType:'sum'},
{name:'diagonasticRevenue',index:'diagonasticRevenue', width:100, align:"right",sorttype:"float", formatter:"number", summaryType:'sum'},
{name:'opRevenue',index:'opRevenue', width:100, align:"right",sorttype:"float",formatter:"number", summaryType:'sum'},
{name:'ipRevenue',index:'ipRevenue', width:100, align:"right",sorttype:"float",formatter:"number", summaryType:'sum'},
{name:'packgRevenue',index:'packgRevenue', width:100, align:"right",sorttype:"float", formatter:"number", summaryType:'sum'},
{name:'revenue',index:'revenue', width:100, align:"right",sorttype:"float", formatter:"number", summaryType:'sum'} ],
sortname: ['year','month','doctorname'],
viewrecords: true,
sortorder: "asc",
grouping: true,
grouping: true,
groupingView : {
groupField : ['year','month'],
groupSummary : [false, false],
groupColumnShow : [true, true],
groupText: [ // user the name of a column with curly braces to use it in a summary expression.
// {0} is the formula placeholder for the column (defined by the summaryType property
"<b>{0}</b>" ,
"<div style='float:left;'>Month: <b>{0}</b></div>"+
"<div style='float:right; width: 65%; text-align:right;'><div style='width:100px; font-weight:bold; float:left; text-align:right;'>{pharmacyRevenue}</div>"+
"<div style='width:100px; font-weight:bold; float:left; text-align:right;'>{diagonasticRevenue}</div>"+
"<div style='width:100px; font-weight:bold; float:left; text-align:right;'>{opRevenue}</div>"+
"<div style='width:100px; font-weight:bold; float:left; text-align:right;'>{ipRevenue}</div>"+
"<div style='width:100px; font-weight:bold; float:left; text-align:right;'>{packgRevenue}</div>"+
"<div style='width:100px; float:right; text-align:right;'><label>Total: </label> <b>{revenue}</b></div>"+
"</div>"
],
groupCollapse : true,
groupOrder: ['asc','asc'],
groupDataSorted : true,
groupSummaryPos: ['header']
},
footerrow: true,
userDataOnFooter: true,
loadComplete: function () {
var reportSum = jQuery("#doctorChart").jqGrid('getCol', 'revenue', false, 'sum');
var pharmacySum = jQuery("#doctorChart").jqGrid('getCol', 'pharmacyRevenue', false, 'sum');
var diagonasticSum = jQuery("#doctorChart").jqGrid('getCol', 'diagonasticRevenue', false, 'sum');
var opSum = jQuery("#doctorChart").jqGrid('getCol', 'opRevenue', false, 'sum');
var ipSum = jQuery("#doctorChart").jqGrid('getCol', 'ipRevenue', false, 'sum');
var packgSum = jQuery("#doctorChart").jqGrid('getCol', 'packgRevenue', false, 'sum');
jQuery("#doctorChart").jqGrid('footerData', 'set',
{
month: 'Grand Total:',
revenue: reportSum ,
pharmacyRevenue : pharmacySum,
diagonasticRevenue : diagonasticSum,
opRevenue : opSum,
ipRevenue : ipSum,
packgRevenue : packgSum
});
}
我不知道jqGrid 5.0.0中的变化,因为我开发了替代fork,目前的版本是4.9.2。然而,我认为sortname:['year','month','doctorname']选项是错误的。该值应为字符串。我想您更想要的是sortname选项:“doctorname” 你主要问题的原因如下。您应该从中修复月份列的定义 {名称:'month',索引:'month',宽度:80, sorttype:功能单元{ 返回单元monthno } }, 到 {名称:'月份',宽度:80, sorttype:功能单元格,项目{ 返回项。monthno; } },
谢谢,这很有效。但当我以另一种方式改变分组时,它就搞砸了。@tuhinsubgradey:不客气!对不起,我不明白你之前的评论是什么意思。你改变了什么?您期望的是什么,看到的是什么?我使用了上面的数据集,并尝试了分组字段:['doctorname','year']和我的sortname:'doctorname',但它没有按月份排序。@tuhinsubgrade:最后的选项没有任何对'month'列的引用。在这种情况下,为什么jqGrid应该按月分组或排序?我不知道你需要什么。groupingView:{…,groupField:['year','month'],…},sortname:'doctorname'或groupingView:{…,groupField:['doctorname','year'],…},sortname:'month'可能有意义,但groupingView:{…,groupField:['doctorname','year'],},sortname:'doctorname'可能没有意义。在分组过程中,jqGrid必须首先按groupField中的列进行排序,它可以使用另一个字段在组内进行排序。实际上,我想要这两个字段。用户可以按列动态更改组。
var mydata = [
{
year:"2015",
month:"April",
doctorname:"Ben Pomeroy",
revenue:"29012.0",
monthno: 4,
pharmacyRevenue:"5906.0",
diagonasticRevenue:"0.0",
opRevenue:"4119.0",
ipRevenue:"11351.0",
packgRevenue: "7636.0"
} ,
{
year:"2015",
month:"April",
doctorname:"Kerry Hall",
revenue:"35396.0",
monthno: 4,
pharmacyRevenue:"6705.0",
diagonasticRevenue:"1959.0",
opRevenue:"7384.0",
ipRevenue:"6837.0",
packgRevenue: "12511.0"
} ,
{
year:"2015",
month:"April",
doctorname:"Maarten Schuth",
revenue:"29122.0",
monthno: 4,
pharmacyRevenue:"4850.0",
diagonasticRevenue:"1794.0",
opRevenue:"7119.0",
ipRevenue:"3316.0",
packgRevenue: "12043.0"
} ,