首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQgrid透视: jquery.jqGrid.src.js:11851未捕获分组:无法设置未定义的属性“TypeError”

JQgrid透视: jquery.jqGrid.src.js:11851未捕获分组:无法设置未定义的属性“TypeError”
EN

Stack Overflow用户
提问于 2017-11-24 22:09:50
回答 3查看 379关注 0票数 0

我在绑定JSON数据到Jqgrid透视表时遇到了一个问题,在第一次加载时,它会抛出以下错误,并且无法加载JQGrid。当第二次尝试时,将不会出现以下错误,并成功加载网格。

JQ网格代码:

代码语言:javascript
复制
if ($("#rdbImperial").prop("checked")) {
    grid.jqGrid('jqPivot',
        gridData, {
            xDimension: [
            {
                dataName: 'MaterialID',
                label: 'MaterialID',
                width: 100
            },
            {
                dataName: 'ZDESMaterialID',
                label: 'ZDES Material ID',
                width: 150
            },

            {
                dataName: 'MaterialDescription',
                label: 'Material Description',
                width: 100
            }

            ],
            yDimension: [{
                dataName: 'DimensionCodeWithDescription',
                converter: MyConverter,

            }],
            aggregates: [
                {
                    formatoptions: { decimalPlaces: 4 },
                    label: "Imperial",
                    width: 160,
                    align: "right",
                    aggregator: "sum",
                    summaryType: "sum",
                    member: "ImperialWithoutUnit",
                    formatter: MyFormatterI,
                }
            ],
            //rowTotals: true,
            //colTotals: true,
            //frozenStaticCols: true
        },
        // grid options
        {
            viewrecords: true,
            gridview: true,
            loadOnce: true,
            emptyrecords: 'No record(s) to display',
            width: "100%",
            height: "Auto",
            multipleGroup:true,
            rowNum: 50,
            caption: "Grid View - Part Number(s) search result",
            loadComplete: function () {
                $('#gridPartNumberSearchGridView').css("max-width", "100%");
            },
            gridComplete: function () {
                if (window.IsMultiple == true) {
                    $('#divDisplayMessage').css("display", "block");
                }
                else {
                    $('#divDisplayMessage').css("display", "none");
                }
            }
        });

    $('#gridPartNumberSearchGridView').jqGrid('groupingRemove');
    $("#gridPartNumberSearchGridView").hideCol("MaterialID");
}

哪里

代码语言:javascript
复制
var MyConverter = function (val) 
{ return (val.replace(/"/g, "")).replace(/'/g, "").replace(/\s/g, '_'); 
}

var MyFormatterI = function (cellvalue, options, rowObject) {
    //debugger;
    var storedString = localStorage.getItem('myEventsArray');
    var parsedObject = JSON.parse(storedString);
    if (options.rowId != "") {
        if (cellvalue === undefined) { return ''; }
        else if (cellvalue.toString().length > 10) { window.IsMultiple = true; return "*"; }
        else if (isNaN(cellvalue) && cellvalue != undefined && parsedObject!=null) {
            for (var i = 0; i < parsedObject.length ; i++) {
                if ((parsedObject[i].MaterialDescription == rowObject["MaterialDescription"])
                    && (parsedObject[i].ZDESMaterialID == rowObject["ZDESMaterialID"])
                    && ((parsedObject[i].DimensionCodeWithDescription.replace(/\s/g, '_') == options.colModel.name) || (parsedObject[i].DimensionCodeWithDescription.replace(/\s/g, '_') + '_sum_0' == options.colModel.name))
                    && (parsedObject[i].ImperialCount == 1)) {
                    var str = parsedObject[i].ImperialWithoutUnit;
                    return retValue(str);
                }
            }
        }
        else {
            return cellvalue;
        }
    }
}
EN

回答 3

Stack Overflow用户

发布于 2017-11-27 17:16:00

首先要说的是: jqGrid 4.6.0已经有3.5年的历史了!很长一段时间以来都不支持它。我另外写给你,只有当你发布测试数据和更多完整的代码(MyFormatterIMyConvertergridData没有在你当前的代码中定义)时,你才能分析问题。我建议你升级到免费的jqGrid 4.15.2。它包含完全重写的jqPivot实现,但大多数选项都是相同的。请在the wiki artickle中查看更多详细信息。

关于你的主要问题。可以看出这个错误存在于groupingRemove方法中。您的代码使用grid.jqGrid('jqPivot', ...)创建网格(数据透视表),但稍后使用的是$('#gridPartNumberSearchGridView')而不是grid (请参阅groupingRemovehideCol的调用)。我认为$('#gridPartNumberSearchGridView')不是jqGrid,因此groupingRemove方法的调用失败。

更新:如果你只想防止分组,你可以添加grouping: false作为jqGrid的附加参数(例如在rowNum: 50附近)。

更新2: Retro4.6版本使用另一种参数顺序作为自由jqGrid (将the linethis one进行比较)。如果你不想升级到免费的jqGrid,那么你可以使用onInitGrid作为变通办法:

代码语言:javascript
复制
onInitGrid: function () {
    this.p.grouping = false; // reset grouping before it will be processed
}
票数 0
EN

Stack Overflow用户

发布于 2017-11-27 17:27:10

我认为错误的原因是没有创建pivot (因为Ajax和更多的时间来构建pivot),但在创建之前调用了一个删除分组,这当然会失败。为了纠正这个问题,我建议你使用最后一个命令中的setTimeout -即:

代码语言:javascript
复制
grid.jqGrid('jqPivot',
...
);  
setTimeout(function() {
    $('#gridPartNumberSearchGridView').jqGrid('groupingRemove');
    $("#gridPartNumberSearchGridView").hideCol("MaterialID");
}, 800);
票数 0
EN

Stack Overflow用户

发布于 2017-11-27 19:31:50

我们需要从Pivot中删除分组,所以我们使用groupingRemove方法。有没有其他方法可以获取文本,而不是使用"MyFormatterI“将数字格式化为字符串。有没有可能直接通过Pivot JQgrid调用ajax (我试过这样做不起作用),而不是从外部调用?

代码语言:javascript
复制
var MyConverter = function (val) 
{ return (val.replace(/"/g, "")).replace(/'/g, "").replace(/\s/g, '_'); 
}


var MyFormatterI = function (cellvalue, options, rowObject) {
    //debugger;
    var storedString = localStorage.getItem('myEventsArray');
    var parsedObject = JSON.parse(storedString);
    if (options.rowId != "") {
        if (cellvalue === undefined) { return ''; }
        else if (cellvalue.toString().length > 10) { window.IsMultiple = true; return "*"; }
        else if (isNaN(cellvalue) && cellvalue != undefined && parsedObject!=null) {
            for (var i = 0; i < parsedObject.length ; i++) {
                if ((parsedObject[i].MaterialDescription == rowObject["MaterialDescription"])
                    && (parsedObject[i].ZDESMaterialID == rowObject["ZDESMaterialID"])
                    && ((parsedObject[i].DimensionCodeWithDescription.replace(/\s/g, '_') == options.colModel.name) || (parsedObject[i].DimensionCodeWithDescription.replace(/\s/g, '_') + '_sum_0' == options.colModel.name))
                    && (parsedObject[i].ImperialCount == 1)) {
                    var str = parsedObject[i].ImperialWithoutUnit;
                    return retValue(str);
                }
            }
        }
        else {
            return cellvalue;
        }
    }
}

JSON数据(getData):

代码语言:javascript
复制
{ MaterialID = "000000000000000079", MaterialDescription = "38/NC;A", DimensionCodes = "AA3", DimensionDescription = "RACE", ImperialWithoutUnit = "1.58", MetricWithoutUnit = "9089", ZDESMaterialID = "000000000000000079", DimensionCodeWithDescription = "RACE" <br/> AA" }
{ MaterialID = "000000000000000079", MaterialDescription = "38/NC;A", DimensionCodes = "AA6", DimensionDescription = "LARGE", ImperialWithoutUnit = "2.93", MetricWithoutUnit = "9080", ZDESMaterialID = "000000000000000079", DimensionCodeWithDescription = "LARGE RIB<br/> AA" }
{ MaterialID = "000000000000000069", MaterialDescription = "38/NC;B", DimensionCodes = "AA7", DimensionDescription = "RACE BF", ImperialWithoutUnit = "3.775", MetricWithoutUnit = "19808", ZDESMaterialID = "000000000000000069", DimensionCodeWithDescription = "RACE BF<br/> AA" }
{ MaterialID = "000000000000000069", MaterialDescription = "38/NC;B", DimensionCodes = "AA9", DimensionDescription = "BORE", ImperialWithoutUnit = "4.1654", MetricWithoutUnit = "1980", ZDESMaterialID = "000000000000000069", DimensionCodeWithDescription = "BORE<br/> AA" }
{ MaterialID = "000000000000000059", MaterialDescription = "38/NC;C", DimensionCodes = "AA10", DimensionDescription = "SMALL RIB", ImperialWithoutUnit = "8.6250", MetricWithoutUnit = "1909", ZDESMaterialID = "000000000000000059", DimensionCodeWithDescription = "SMALL RIB<br/> AA" }
{ MaterialID = "000000000000000059", MaterialDescription = "38/NC;C", DimensionCodes = "AA11", DimensionDescription = "WIDTH", ImperialWithoutUnit = "10.8640", MetricWithoutUnit = "2290", ZDESMaterialID = "000000000000000059", DimensionCodeWithDescription = "WIDTH<br/> AA" }
{ MaterialID = "000000000000000049", MaterialDescription = "38/NC;D", DimensionCodes = "AA12", DimensionDescription = "LARGE WIDTH", ImperialWithoutUnit = "0.1600", MetricWithoutUnit = "9080", ZDESMaterialID = "000000000000000049", DimensionCodeWithDescription = "LARGE<br/> AA" }
{ MaterialID = "000000000000000049", MaterialDescription = "38/NC;D", DimensionCodes = "AA13", DimensionDescription = "LG HEIGHT", ImperialWithoutUnit = "0.1100", MetricWithoutUnit = "9080", ZDESMaterialID = "000000000000000049", DimensionCodeWithDescription = "LG<br/> AA" }
{ MaterialID = "000000000000000039", MaterialDescription = "38/NC;E", DimensionCodes = "AA14", DimensionDescription = "RACE FF", ImperialWithoutUnit = "0.1270", MetricWithoutUnit = "9097", ZDESMaterialID = "000000000000000039", DimensionCodeWithDescription = "RACE FF<br/> AA" }
{ MaterialID = "000000000000000039", MaterialDescription = "38/NC;E", DimensionCodes = "AA15", DimensionDescription = "LG RIB", ImperialWithoutUnit = "0.0500", MetricWithoutUnit = "8090", ZDESMaterialID = "000000000000000039", DimensionCodeWithDescription = "LG LENGTH<br/> AA" }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47475008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档