2016-08-04 69 views
0

我一直在阅读大量关于同类问题的帖子,但没有人帮助我解决了jqGrid获取的这个问题。我不明白我在做什么错..jqGrid - 数据以JSON形式返回,但未显示

这里是我的PHP文件返回的数据(它颠倒intentionnally下令,因为我分类整理DESC):

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

这里结束其中i回声之前设置数据的PHP文件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(); 
    } 
}); 

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

回答

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]必须是相同还是完全不同?

顺便说一句,我整理我的对象的PHP阵列uasort:

uasort($listeFiltree, "CentreGroupe::trier".ucfirst($sortOrder).ucfirst($sortId)); 

好吧,我不得不使用usort()使阵列的键被重新分配。看起来这个id对jqGrid非常重要。 希望这将有助于未来的人。 问题解决了。和平