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

JQ网格代码:
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");
}哪里
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;
}
}
}发布于 2017-11-27 17:16:00
首先要说的是: jqGrid 4.6.0已经有3.5年的历史了!很长一段时间以来都不支持它。我另外写给你,只有当你发布测试数据和更多完整的代码(MyFormatterI,MyConverter和gridData没有在你当前的代码中定义)时,你才能分析问题。我建议你升级到免费的jqGrid 4.15.2。它包含完全重写的jqPivot实现,但大多数选项都是相同的。请在the wiki artickle中查看更多详细信息。
关于你的主要问题。可以看出这个错误存在于groupingRemove方法中。您的代码使用grid.jqGrid('jqPivot', ...)创建网格(数据透视表),但稍后使用的是$('#gridPartNumberSearchGridView')而不是grid (请参阅groupingRemove和hideCol的调用)。我认为$('#gridPartNumberSearchGridView')不是jqGrid,因此groupingRemove方法的调用失败。
更新:如果你只想防止分组,你可以添加grouping: false作为jqGrid的附加参数(例如在rowNum: 50附近)。
更新2: Retro4.6版本使用另一种参数顺序作为自由jqGrid (将the line与this one进行比较)。如果你不想升级到免费的jqGrid,那么你可以使用onInitGrid作为变通办法:
onInitGrid: function () {
this.p.grouping = false; // reset grouping before it will be processed
}发布于 2017-11-27 17:27:10
我认为错误的原因是没有创建pivot (因为Ajax和更多的时间来构建pivot),但在创建之前调用了一个删除分组,这当然会失败。为了纠正这个问题,我建议你使用最后一个命令中的setTimeout -即:
grid.jqGrid('jqPivot',
...
);
setTimeout(function() {
$('#gridPartNumberSearchGridView').jqGrid('groupingRemove');
$("#gridPartNumberSearchGridView").hideCol("MaterialID");
}, 800);发布于 2017-11-27 19:31:50
我们需要从Pivot中删除分组,所以我们使用groupingRemove方法。有没有其他方法可以获取文本,而不是使用"MyFormatterI“将数字格式化为字符串。有没有可能直接通过Pivot JQgrid调用ajax (我试过这样做不起作用),而不是从外部调用?
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):
{ 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" }https://stackoverflow.com/questions/47475008
复制相似问题