jqGrid - 数据以JSON形式返回但未显示

时间:2016-08-04 08:14:52

标签: php jquery json jqgrid

我在这里一直在阅读很多关于同样问题的帖子,但没有人帮我解决了jqGrid带来的这个问题。我不知道我做错了什么..

这里是我的php文件返回的数据(它有意颠倒了,因为我对它进行了排序):

{"rows":{"1":{"id":"2","cell":["2","Italie","8",""]},"0":{"id":"1","cell":["1","France","8",""]}},"page":"1","total":1,"records":2}

这里是php文件的结尾,我在echo json_encode之前设置了数据:

// Préparation du tableau de retour 
$tableauGroupes = array();

// Si nous avons obtenu des résultats
if (count($listeFiltree) > 0) {
    foreach ($listeFiltree as $index => $groupe) {
        // On récupère le tableau contenant toutes les traductions pour le nom du groupe
        $tableauTraduction = (int)$groupe->getNomGroupe();
        // On récupère le nombre de sousGroupes dans le tableau de sousGroupes
        $nombreEnfants = count($groupe->getTableauCentreSousGroupe());
        // Préparation des lignes à afficher
        $tableauGroupes['rows'][$index]['id'] = $groupe->getGroupe();
        $tableauGroupes['rows'][$index]['cell'] = array($groupe->getGroupe(), $tableauTraduction[$langue], (string)$nombreEnfants, "");
    }
}

// Ajout des informations générales
$tableauGroupes['page'] = $page;
$tableauGroupes['total'] = ceil(count($tableauGroupes)/$limit);
$tableauGroupes['records'] = count($tableauGroupes["rows"]);


echo json_encode($tableauGroupes);

这里是jqGrid表的初始化(过去工作得很好):

// Configuration du jqGrid des centres
$("#listeGroupes").jqGrid({
    url: 'struct/<?=$rubrique?>/<?=$sous_rubrique?>/controleurs/tableauGroupes.php?sid=<? echo $sid;?>&sigle=<? echo $sigle;?>&langue=<? echo $langue;?>&nd='+new Date().getTime(), // Url de récupération des données
    height: tailleListe, // Hauteur de la grille
    ajaxGridOptions: {async: false}, // Surcharge des options ajax, lors des chargements de données
    datatype: "json", // Type de données récupérées par la grille
    colNames:["<?=THEAD_GROUPE?>","<?=THEAD_NOM_GROUPE?>","<?=THEAD_NB_SOUSGROUPE?>","<?=THEAD_ACTIONS?>"],
    colModel:[ // Configuration des colonnes
        {name:'groupe', index:'groupe', width:40, sortable:true, search:true},
        {name:'nomGroupe', index:'nomGroupe', width:100, sortable:true, search:true},
        {name:'nbSousGroupes', index:'nombreEnfants', width:40, sortable:true, search:true},
        {name:'actions', index:'actions', width:65, sortable:false, editable: false, search:false}
    ],
    rowNum:20, // Nombre de lignes par page
    rowList: [10,20,30,50], // Nombre de lignes par page possibles
    altclass:'odd', // Classe css des lignes alternantes (1/2)
    altRows:true, // Alternance de lignes
    pager: '#pagerlisteGroupes', // Identifiant du pager
    sortname: 'groupe', // Colonne par laquelle on trie par défaut
    sortorder: "asc", // Ordre de tri par défaut
    viewrecords: true, // Affiche le nombre de résultats
    autowidth: true, // Largeur automatique
    imgpath: 'css/jqGrid/images', // Chemin d'accès aux images
    pgbuttons: true, // Affiche les boutons du pager
    pginput: true, // Affiche un champ de saisie dans le pager, pour rentrer un numéro de page
    multiselect: true, // Permet de sélectionner simultanément plusieurs lignes
    caption: "Liste des groupes", // Titre de la grille
    //loadonce: true,
    sortable: true,
    ignoreCase:true,
    loadComplete: function(){
    alert("ici");
        initGrilleGroupes();
    },
    onSelectRow: function(id, statut){
        selectionnerGroupe(id);
    }
})
// Ajout du pager
.navGrid('#pagerlisteGroupes',{add:false,edit:false,del:false, search: false, searchtitle: "<? echo utf8_encode(html_entity_decode(TITLE_BOUTON_SEARCH));?>", refresh: false, refreshtitle: "<? echo utf8_encode(html_entity_decode(TITLE_BOUTON_REFRESH));?>"}, {}, {}, {}, { closeAfterSearch: true, drag: true, closeOnEscape: true }, {})
// Ajout de la barre de filtrage
.filterToolbar({searchOnEnter: false})
// Ajout du bouton de création de centre
.navButtonAdd('#pagerlisteGroupes',{
    caption: "", // Texte du bouton
    title: "<?=TITLE_BOUTON_ADD_GROUPE;?>", // Titre tooltip du bouton
    buttonicon: "ui-icon-plus", // Nom de l'icône du bouton
    position: "first", // Position de l'icône dans le pager
    onClickButton: function(){
        clicAjouterGroupe();
    }
});

欢迎任何帮助/建议;) 干杯

1 个答案:

答案 0 :(得分:0)

好的,我想我得到了这个。事情的解释仍然非常受欢迎。 如果我不反向对数据进行排序,它就可以了。

{"rows":[{"id":"1","cell":["1","France","8",""]},{"id":"2","cell":["2","Italie","8",""]}],"page":"1","total":1,"records":2}

打印得当。因此,如果我需要按cell[0]对项目进行排序,这是我在数据库中提取的对象的ID,那么id[0]必须是同一个,还是完全不同?

顺便说一下,我用uasort:

对我的php对象数组进行排序
uasort($listeFiltree, "CentreGroupe::trier".ucfirst($sortOrder).ucfirst($sortId));

好的,我必须使用usort(),以便重新分配数组的键。看起来id对jqGrid来说真的很重要。 希望这将有助于未来的人。 问题解决了。 和平