jqgrid carga datos json del servidor en treegrid no muestra datos
(1)
Soy novato con jqGrid y tengo una jqGrid treeGrid con datos locales y todo está bien. Pero ahora estoy tratando de hacer lo mismo con datos JSON remotos y no puedo obtener treeGrid mostrar mis datos. Aquí está treeGrid conf:
$("#"+subgrid_table_id).jqGrid({
url:"sg511e.php?id="+row_id+"&btr="+btr,
datatype:"json",
mType:''POST'',
loadui: "disable",
colNames:[''id'',''Prestations''],
colModel:[
{name:''id'',index:''id'',width:100,hidden:true},
{name:''name'',index:''name'',width:785,sortable:false}
],
pager: pager_id,
sortname: ''id'',
sortorder: "asc",
hiddengrid:true,
gridview: true,
treeGrid:true,
treeGridModel: "adjacency",
treedatatype: ''json'',
ExpandColumn: ''name'',
jsonReader: {
repeatitems: false,
root: "rows"
},
y datos JSON:
{
"page": 1,
"total": 1,
"records": 1,
"rows": [
{
"cell": {
"id": "1",
"name": "ECHANGEUR",
"level": "0",
"parent": "",
"isLeaf": true,
"expanded": false,
"loaded": true
}
},
{
"cell": {
"id": "1_1",
"name": "Intervention Aller sur Site",
"level": "1",
"parent": "1",
"isLeaf": true,
"expanded": false,
"loaded": true
}
},
{
"cell": {
"id": "1_1_1",
"name": "Date et heure d''arrivée sur le site",
"level": "2",
"parent": "1_1",
"isLeaf": false,
"expanded": true,
"loaded": true
}
},
{
"cell": {
"id": "1_1_2",
"name": "Consignation de l''échangeur",
"level": "2",
"parent": "1_1",
"isLeaf": false,
"expanded": true,
"loaded": true
}
}
]
}
No veo lo que estoy mal, así que espero que puedan brindarme ayuda y explicar mi error. Muchas gracias de antemano JiheL
En primer lugar, debe corregir los datos JSON:
- reemplace
"parent": ""
por"parent": "null"
en el elemento raíz - debe invertir los valores de la propiedad
isLeaf
: cambie todostrue
valorestrue
afalse
y cambie todosfalse
valoresfalse
atrue
- deberías eliminar
"cell"
parte"cell"
de todos los elementos - El valor
"records": 1
no corresponde a 4 elementos de datos. Supongo que el valor correcto debería ser"records": 4
, pero lo mejor será eliminar elpager
de la lista de opciones de la cuadrícula. En la configuración de casos de cualquierpage
, eltotal
o losrecords
no serán importantes.
Puede simplificar más los datos y eliminar la parte de las rows
de los datos JSON. En el caso tenemos que cambiar la propiedad root
de jsonReader
a root: function (obj) { return obj; }
root: function (obj) { return obj; }
. Como resultado, puede usar los siguientes datos JSON simples:
[
{
"id": "1",
"name": "ECHANGEUR",
"level": "0",
"parent": "null",
"isLeaf": false,
"expanded": false,
"loaded": true
},
{
"id": "1_1",
"name": "Intervention Aller sur Site",
"level": "1",
"parent": "1",
"isLeaf": false,
"expanded": false,
"loaded": true
},
{
"id": "1_1_1",
"name": "Date et heure d''arrivée sur le site",
"level": "2",
"parent": "1_1",
"isLeaf": true,
"expanded": true,
"loaded": true
},
{
"id": "1_1_2",
"name": "Consignation de l''échangeur",
"level": "2",
"parent": "1_1",
"isLeaf": true,
"expanded": true,
"loaded": true
}
]
La demostración demuestra los resultados de los cambios. Después de extender la cuadrícula se ve como en la imagen de abajo
El código que utilicé en la demostración es:
$("#grid").jqGrid({
url: "user2132268.json",
datatype: "json",
colNames: [ ''id'', ''Prestations''],
colModel: [
{name: ''id'', width: 100, key: true, hidden: true},
{name: ''name'', width: 785, sortable: false}
],
sortname: ''id'',
sortorder: "asc",
hiddengrid: true,
gridview: true,
treeGrid: true,
treeGridModel: "adjacency",
ExpandColumn: ''name'',
ExpandColClick: true,
jsonReader: { repeatitems: false, root: function (obj) { return obj; } },
height: "auto"
});