需要用 3 个不同数组中的嵌套数据形成一个数组对象
Need to form an array object with nested data out of 3 different arrays
需要用 3 个不同的数组 records、records1 和 records2 组成一个数组对象,这样它就必须看起来像一个嵌套的树结构
以下是我将 JSON 数据绑定到数组的代码。想将其作为一个单独的数组,以便可以将其传递到嵌套子网格的 JQGRID 中。
if (contracts !== undefined && contracts !== null && contracts.length > 0) {
var a= [] ;
//============================================================
// build records of Contracts
//============================================================
$.each(contracts, function (index, contract) {
a[index] = {};
a[index]['id'] = contract.ID;
a[index]['description'] = contract.Description;
}
$.each(contract.Contractabc, function (index2, contract1) {
a[index2] = {};
a[index2]['contractlineid'] = contractLine.ID;
a[index2]['itemname'] = contractLine.ItemName;
$.each(Contractabc.Prod, function (index3, product) {
a[index3] = {};
a[index3]['productid'] = product.ID;
a[index3]['name'] = product.Name;
a[index3]['description'] = product.Description;
});
});
});
} else {
$('#grid').html('No records exists.');
}
你的问题是当你只需要一个时你使用了 3 个不同的数组,试试这个
var $gridName = $('#account-contract-grid');
if (contracts !== undefined && contracts !== null && contracts.length > 0) {
var records = [];
//============================================================
// build records of Contracts
//============================================================
$.each(contracts, function (index, contract) {
var _newContract = {};
_newContract['contractid'] = contract.ID;
_newContract['description'] = contract.Description;
_newContract['status'] = contract.Status.Value;
_newContract['classification'] = contract.Classification;
_newContract['startdate'] = PD.Utilities.FormatDateDDMMMYYYY(contract.DateStart);
_newContract['enddate'] = PD.Utilities.FormatDateDDMMMYYYY(contract.DateEnd);
_newContract['canceldate'] = PD.Utilities.FormatDateDDMMMYYYY(contract.DateCancel);
_newContract['subgrid'] = [];
if (contract.Status.ID == '1' || contract.Status.ID == '2') { //1=open, 2=suspended
_isAllowNewSubscription = true
}
//============================================================
// build records of Contract Lines
//============================================================
$.each(contract.ContractLines, function (index2, contractLine) {
var _newContractLine = {};
_newContractLine['contractlineid'] = contractLine.ID;
_newContractLine['itemname'] = contractLine.ItemName;
_newContractLine['startdate'] = PD.Utilities.FormatDateDDMMMYYYY(contractLine.DateStart);
_newContractLine['enddate'] = PD.Utilities.FormatDateDDMMMYYYY(contractLine.DateEnd);
_newContractLine['canceldate'] = PD.Utilities.FormatDateDDMMMYYYY(contractLine.DateCancel);
_newContractLine['vendorname'] = contractLine.Vendor.Name;
_newContractLine['description'] = contractLine.Description;
_newContractLine['isshipped'] = contractLine.IsShipped;
_newContractLine['subgrid'] = [];
//============================================================
// build records of Products
//============================================================
$.each(contractLine.Products, function (index3, product) {
var _newProduct = {};
_newProduct['productid'] = product.ID;
_newProduct['name'] = product.Name;
_newProduct['description'] = product.Description;
_newContractLine['subgrid'].push(_newProduct);
}); // records2
_newContract['subgrid'].push(_newContractLine);
}); // records1
records.push(_newContract);
}); // records
$gridName.setGridWidth($('#account-page').width() - 15, true);
} else {
$('#account-contract-content').html('No records exists.');
}
最后,在变量 records
中你将拥有所有数据,我认为它已经足够接近你想要的变量 mainGrid
的数据了。我还没有测试自己,因为我没有 contracts
的示例数据。让我知道它是否适合你。
需要用 3 个不同的数组 records、records1 和 records2 组成一个数组对象,这样它就必须看起来像一个嵌套的树结构 以下是我将 JSON 数据绑定到数组的代码。想将其作为一个单独的数组,以便可以将其传递到嵌套子网格的 JQGRID 中。
if (contracts !== undefined && contracts !== null && contracts.length > 0) {
var a= [] ;
//============================================================
// build records of Contracts
//============================================================
$.each(contracts, function (index, contract) {
a[index] = {};
a[index]['id'] = contract.ID;
a[index]['description'] = contract.Description;
}
$.each(contract.Contractabc, function (index2, contract1) {
a[index2] = {};
a[index2]['contractlineid'] = contractLine.ID;
a[index2]['itemname'] = contractLine.ItemName;
$.each(Contractabc.Prod, function (index3, product) {
a[index3] = {};
a[index3]['productid'] = product.ID;
a[index3]['name'] = product.Name;
a[index3]['description'] = product.Description;
});
});
});
} else {
$('#grid').html('No records exists.');
}
你的问题是当你只需要一个时你使用了 3 个不同的数组,试试这个
var $gridName = $('#account-contract-grid');
if (contracts !== undefined && contracts !== null && contracts.length > 0) {
var records = [];
//============================================================
// build records of Contracts
//============================================================
$.each(contracts, function (index, contract) {
var _newContract = {};
_newContract['contractid'] = contract.ID;
_newContract['description'] = contract.Description;
_newContract['status'] = contract.Status.Value;
_newContract['classification'] = contract.Classification;
_newContract['startdate'] = PD.Utilities.FormatDateDDMMMYYYY(contract.DateStart);
_newContract['enddate'] = PD.Utilities.FormatDateDDMMMYYYY(contract.DateEnd);
_newContract['canceldate'] = PD.Utilities.FormatDateDDMMMYYYY(contract.DateCancel);
_newContract['subgrid'] = [];
if (contract.Status.ID == '1' || contract.Status.ID == '2') { //1=open, 2=suspended
_isAllowNewSubscription = true
}
//============================================================
// build records of Contract Lines
//============================================================
$.each(contract.ContractLines, function (index2, contractLine) {
var _newContractLine = {};
_newContractLine['contractlineid'] = contractLine.ID;
_newContractLine['itemname'] = contractLine.ItemName;
_newContractLine['startdate'] = PD.Utilities.FormatDateDDMMMYYYY(contractLine.DateStart);
_newContractLine['enddate'] = PD.Utilities.FormatDateDDMMMYYYY(contractLine.DateEnd);
_newContractLine['canceldate'] = PD.Utilities.FormatDateDDMMMYYYY(contractLine.DateCancel);
_newContractLine['vendorname'] = contractLine.Vendor.Name;
_newContractLine['description'] = contractLine.Description;
_newContractLine['isshipped'] = contractLine.IsShipped;
_newContractLine['subgrid'] = [];
//============================================================
// build records of Products
//============================================================
$.each(contractLine.Products, function (index3, product) {
var _newProduct = {};
_newProduct['productid'] = product.ID;
_newProduct['name'] = product.Name;
_newProduct['description'] = product.Description;
_newContractLine['subgrid'].push(_newProduct);
}); // records2
_newContract['subgrid'].push(_newContractLine);
}); // records1
records.push(_newContract);
}); // records
$gridName.setGridWidth($('#account-page').width() - 15, true);
} else {
$('#account-contract-content').html('No records exists.');
}
最后,在变量 records
中你将拥有所有数据,我认为它已经足够接近你想要的变量 mainGrid
的数据了。我还没有测试自己,因为我没有 contracts
的示例数据。让我知道它是否适合你。