Jquery 如何在透视单元格中放置不同类型的值?

Jquery 如何在透视单元格中放置不同类型的值?,jquery,jqgrid,free-jqgrid,jqpivot,Jquery,Jqgrid,Free Jqgrid,Jqpivot,我有以下的json数据,我尝试创建以下pivot jqgrid JSON var data = [{"id":1,"make":"toyota","model":"corolla","fuelusagecity":"17","fuelusagehwy":"12","salesaboveavg":false,"totalnumberofsales":120000,"cellvalue":"10.1","highlight":true,"mark":true,"salesdate":"2012

我有以下的
json
数据,我尝试创建以下
pivot jqgrid

JSON

   var data = [{"id":1,"make":"toyota","model":"corolla","fuelusagecity":"17","fuelusagehwy":"12","salesaboveavg":false,"totalnumberofsales":120000,"cellvalue":"10.1","highlight":true,"mark":true,"salesdate":"2012-01-01"},{"id":2,"make":"toyota","model":"corolla","fuelusagecity":"17","fuelusagehwy":"12","salesaboveavg":false,"totalnumberofsales":100000,"cellvalue":"SUPER","highlight":false,"mark":true,"salesdate":"2012-01-20"},{"id":3,"make":"toyota","model":"belta","fuelusagecity":"15","fuelusagehwy":"10","salesaboveavg":true,"totalnumberofsales":200000,"cellvalue":"0.99","highlight":true,"mark":false,"salesdate":"2014-10-10"},{"id":4,"make":"toyota","model":"camry","fuelusagecity":"13","fuelusagehwy":"10","salesaboveavg":false,"totalnumberofsales":300000,"cellvalue":">=MARGIN","highlight":false,"mark":false,"salesdate":"2014-12-12"},{"id":5,"make":"nissan","model":"skyline","fuelusagecity":"14","fuelusagehwy":"9","salesaboveavg":true,"totalnumberofsales":500000,"cellvalue":"7.88","highlight":false,"mark":true,"salesdate":"2014-12-31"},{"id":6,"make":"nissan","model":"zx300","fuelusagecity":"10","fuelusagehwy":"8","salesaboveavg":false,"totalnumberofsales":400000,"cellvalue":"NPP","highlight":true,"mark":true,"salesdate":"2016-01-20"}];
JQGRID图像

代码

var data=[{“id”:1,“make”:“toyota”,“model”:“corolla”,“fuelusagecity”:“17”,“FuelUsageHway”:“12”,“SalesOverAvg”:false,“totalnumberofsales”:120000,“cellvalue”:“10.1”,“highlight”:true,“mark”:true,“salesdate”:“2012-01-01”},{“id”:2,“make”:“toyota”,“model”:“corolla”,“fuelusagecity”:“17”,“FuelUsageHway”:“12”,“SalesOverAvg”:false,“totalnumberofsales”:100000,“cellvalue”:“SUPER”,“highlight”:false,“mark”:true,“salesdate”:“2012-01-20”},{“id”:3,“make”:“toyota”,“model”:“belta”,“fuelusagecity”:“15”,“FuelUsageHway”:“10”,“SalesoverAvg”:true,“totalnumberofsales”:200000,“cellvalue”:“0.99”,“highlight”:true,“mark”:false,“salesdate”:“2014-10-10”},{“id”:4,“make”:“toyota”,“model”:“camry”,“model”:“camry”fuelusagecity“:”13“,”fuelusagehwy“:”10“,”SalesoverAvg“:”false“,”totalnumberofsales“:”300000“,”cellvalue“:”>=保证金“,”高光“:”false“,”销售日期“:”2014-12-12”},{”id“:”5,“make“:”日产“,”车型“:”skyline“,”fuelusagecity“:”14“,”fuelusagehwy“:”9“,”SalesoverAvg“,”真,“totalnumberofsales“:”500000,“Ce“:true,“salesdate”:“2014-12-31”},{“id”:6,“make”:“nissan”,“model”:“zx300”,“fuelusagecity”:“10”,“fuelusagehwy”:“8”,“SalesOverAvg”:false,“totalnumberofsales”:400000,“cellvalue”:“NPP”,“highlight”:true,“mark”:true,“salesdate”:“2016-01-20”}”;
var myIntTemplate={
格式化程序:“货币”,
对齐:“右”,排序类型:“数字”,
搜索选项:{sopt:[“eq”、“ne”、“lt”、“le”、“gt”、“ge”]},
formatoptions:{defaultValue:}};
var prevmake='',prevmodel='';
$(“#list483”).jqGrid(“jqPivot”,
数据,
{
Frozencols:没错,
skipSortByX:true,//true,
使用科尔斯潘风格:正确,
//defaultFormatting:false,
XD尺寸:[
{/*x0*/dataName:“make”,宽度:100,标签:“make”},
{/*x1*/dataName:“model”,宽度:100,对齐:“center”,skipgroup:true},
{/*x2*/dataName:“salessoveravg”,隐藏:true,宽度:50,对齐:“中心”,skipgroup:true},
{/*x3*/dataName:“fuelusagecity”,宽度:80,对齐:“中心”,隐藏:true,
标签:“燃油消耗量”,跳过分组:正确
},
{/*x4*/dataName:“fuelusagehwy”,
宽度:80,
对齐:“居中”,
标签:“燃油消耗量”,
SkipGroup:真
}
],
Y尺寸:[
{/*y0*/dataName:“销售日期”,
巫师:“描述”,
比较:功能(项目1、项目2){
如果(item1==item2){返回0;}
返回项1<项2?-1:1;
}
}],
骨料:[{
成员:“cellvalue”,
模板:myIntTemplate,
聚合器:“最大”
}/*,
{
成员:“totalnumberofsales”,
聚合器:“计数”,
//模板:“整数”,
标签:{0}
}*/]
},
//网格选项
{
iconSet:“真棒”,
cmTemplate:{自动调整大小:true,宽度:80},
shrinkToFit:错,
UseUnformatedDataForcellattr:false,
自动调整大小:{compact:true},
分组视图:{
组字段:[“x0”],
groupColumnShow:[错误],
groupText:[“{0}”]
},
宽度:550,
寻呼机:是的,
rowNum:20,
描述:“汽车销售统计”,
行列表:[5、10、20、100,“10000:全部”]
}
);
正如您在
json
数组中看到的,属性名
cellvalue
被分配给了透视单元格。但问题是,只有当
cellvalue
属性值是数字字符串时,它才会显示单元格值,但如果
cellvalue
属性是文本字符串,它不会在透视单元格中显示单元格值

我该如何解决这个问题

PS:我使用免费网格(免费jqgrid的新版本)

我有更多与此相关的问题,但主要是我需要上述问题的答案


谢谢

对不起,我不明白你的问题。您使用聚合器
cellvalue
属性定义了
聚合
“max”
。您使用
格式化程序:“货币”,sorttype:“数字”
,但输入数据包含值
“10.1”
“超级”
“0.99”
“>=边距”
“7.88”
“NPP”
。您如何想象ExecuteMax聚合器在这些值上运行?您如何想象将Max aggregator的结果格式化为
格式化程序:“currency”
?@Oleg这一点我不知道,所以我用一些数据对它进行了修改。根据规范,我看不出它支持字符串文本数据。聚合器不应用于字符串文本,因为它支持数字。那么,有没有一种方法可以将字符串文本值和字符串数字值一起插入到pivot单元格中,如原始帖子中所述:)我在回答之前的问题时详细解释了pivot的工作原理。聚合函数的计算是透视表的目标。您在问题中包含的测试数据对于任何聚合都没有意义。如果您确实需要使用
   var data = [{"id":1,"make":"toyota","model":"corolla","fuelusagecity":"17","fuelusagehwy":"12","salesaboveavg":false,"totalnumberofsales":120000,"cellvalue":"10.1","highlight":true,"mark":true,"salesdate":"2012-01-01"},{"id":2,"make":"toyota","model":"corolla","fuelusagecity":"17","fuelusagehwy":"12","salesaboveavg":false,"totalnumberofsales":100000,"cellvalue":"SUPER","highlight":false,"mark":true,"salesdate":"2012-01-20"},{"id":3,"make":"toyota","model":"belta","fuelusagecity":"15","fuelusagehwy":"10","salesaboveavg":true,"totalnumberofsales":200000,"cellvalue":"0.99","highlight":true,"mark":false,"salesdate":"2014-10-10"},{"id":4,"make":"toyota","model":"camry","fuelusagecity":"13","fuelusagehwy":"10","salesaboveavg":false,"totalnumberofsales":300000,"cellvalue":">=MARGIN","highlight":false,"mark":false,"salesdate":"2014-12-12"},{"id":5,"make":"nissan","model":"skyline","fuelusagecity":"14","fuelusagehwy":"9","salesaboveavg":true,"totalnumberofsales":500000,"cellvalue":"7.88","highlight":false,"mark":true,"salesdate":"2014-12-31"},{"id":6,"make":"nissan","model":"zx300","fuelusagecity":"10","fuelusagehwy":"8","salesaboveavg":false,"totalnumberofsales":400000,"cellvalue":"NPP","highlight":true,"mark":true,"salesdate":"2016-01-20"}];


    var myIntTemplate = {
        formatter: "currency",
        align: "right", sorttype: "number",
        searchoptions: { sopt: ["eq", "ne", "lt", "le", "gt", "ge"] },
        formatoptions: { defaultValue: ""}};
var prevmake='', prevmodel='';
    $("#list483").jqGrid("jqPivot",
            data,
            {
                frozenStaticCols: true,
                skipSortByX: true, //true,
                useColSpanStyle: true,
                //defaultFormatting: false,
                xDimension: [
                    {/*x0*/ dataName: "make", width: 100, label: "Make" },
                    {/*x1*/ dataName: "model", width: 100, align: "center", skipGrouping: true },
                    {/*x2*/ dataName: "salesaboveavg", hidden: true, width: 50, align: "center", skipGrouping: true },
                    {/*x3*/ dataName: "fuelusagecity", width: 80, align: "center",hidden: true,
                        label: "fuel<br/>cnsumption", skipGrouping: true
                    },
                    {/*x4*/ dataName: "fuelusagehwy",
                        width: 80,
                        align: "center",
                        label: "fuel<br/>cnsumption",
                        skipGrouping: true
                    }
                ],
                yDimension: [
                    {/*y0*/ dataName: "salesdate",
                        sortorder: "desc",
                        compare: function (item1, item2) {
                          if (item1 === item2) { return 0; }
                            return item1 < item2 ? -1 : 1;
                        }
                    }],
                aggregates: [{
                    member: "cellvalue",
                    template: myIntTemplate,
                    aggregator: "max"
                }/*,
                 {
                 member: "totalnumberofsales",
                 aggregator: "count",
                 //template: "integer",
                 label: "{0}"
                 }*/]
            },
            // grid options
            {
                iconSet: "fontAwesome",
                cmTemplate: { autoResizable: true, width: 80 },
                shrinkToFit: false,
                useUnformattedDataForCellAttr: false,
                autoResizing: { compact: true },
                groupingView: {
                    groupField: ["x0"],
                    groupColumnShow: [false],
                    groupText: ["<span class='group-text'>{0}</span>"]
                },
                width: 550,
                pager: true,
                rowNum: 20,
                caption: "<b>Car sales statistics</b>",
                rowList: [5, 10, 20, 100, "10000:All"]
            }
    );