一種具有產生在形式jsonmap: "FieldData.0.Field"
,jsonmap: "FieldData.1.Field"
,jsonmap: "FieldData.2.Field"
等colModel
元件與jsonmap
:
var mydata = [
...
],
myColModel = [
{ name: "AssetID", label: "Asset ID", key: true,
width: 70, template: "integer", frozen: true },
{ name: "InventoryId", label: "Inventory Id",
width: 90, template: "integer", frozen: true }
];
for (i = 0; i < mydata[0].FieldData.length; i++) {
myColModel.push({
name: "field" + (i + 1),
label: "Field " + (i + 1),
jsonmap: "FieldData." + i + ".Field"
});
}
$("#grid").jqGrid({
data: mydata,
colModel: myColModel,
...
});
相應演示是https://jsfiddle.net/OlegKi/ga9m44wm/
可以使用回調函數作爲jsonmap
的值。例如人們可以使用
jsonmap: function (item) {
return item.FieldData[0].Field;
}
爲第一列,
jsonmap: function (item) {
return item.FieldData[1].Field;
}
用於第二列等。動態生成的相應功能的colModel
可以使用封jsonmap
屬性:
for (i = 0; i < mydata[0].FieldData.length; i++) {
myColModel.push({
name: "field" + (i + 1),
label: "Field " + (i + 1),
jsonmap: (function (index) {
return function (item) {
return item.FieldData[index].Field;
}
})(i)
});
}
見https://jsfiddle.net/OlegKi/ga9m44wm/1/
有一些額外的重要的事情,其中之一在從服務器加載數據的情況下,跟隨和使用loadonce: true
選項。額外的選項,應該使用哪個選項取決於您使用的jqGrid的版本,以及您使用的jqGrid的分支。我在我的演示中使用了free jqGrid 4.13.5,這是我從2014年底開始開發的jqGrid的分支。由於您仍然使用復古版本4.3.3,我試圖向您提供代碼,該代碼只使用最舊的功能jqGrid的。
字段數(FieldData.length')是固定的(4)還是可變的?您可以使用哪個版本的jqGrid(可以使用)以及從哪個版本的jqGrid([免費jqGrid](https://github.com/free-jqgrid/jqGrid),商業版[Guriddo jqGrid JS](http:// guriddo) net /?page_id = 103334)或版本<= 4.7中的舊jqGrid)? – Oleg
沒有字段的長度不固定,這就是爲什麼我把它列入清單。即時通訊使用jqgrid版本4.3.3。它是我使用的免費版本 – user2838738
是否存在一個原因*爲什麼*您使用復古版本4.3.3?它於4.5年前發佈(2012年5月31日)。現在是網絡瀏覽器的時代:IE9,Firefox 10,Chrome 19.你是否相信Chrome 54,Firexox 50,Microsoft Edge或IE11的復古版本已經夠用了?關於你的主要問題:你應該更明確地制定要求。你知道jqGrid有'colModel',需要填充來創建網格。因此,必須首先分析輸入數據以爲網格生成「colModel」。您只包含*一項*數據。您應該更詳細地描述輸入數據 – Oleg