2016-08-04 16 views
0

Ich habe viele Beiträge hier über die gleichen Probleme gelesen, aber keiner hat mir geholfen, dieses Problem zu lösen, das ich mit jqGrid bekommen habe. Ich verstehe nicht, was ich falsch mache ..jqGrid - Daten als JSON zurückgegeben, aber nicht gezeigt

Hier ist die durch meine PHP-Datei zurückgegebenen Daten (es intentionnally umgekehrt ist bestellt, weil ich es ab bin Sortierung):

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

Hier ist das Ende die pHP-Datei, wo ich die Daten vor dem Echo eingestellt json_encode es:

// 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); 

Hier ist die Initialisierung der jqGrid Tabelle (die nur gut verwendet werden, um Arbeit):

// 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(); 
    } 
}); 

Jede Hilfe/Vorschläge wäre willkommen;) Cheers

Antwort

0

Ok, ich denke, ich habe das. Sache ist die Erklärung ist immer noch wirklich willkommen. Wenn ich die Daten nicht umgekehrt, funktioniert es.

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

Dies wird richtig gedruckt. Wenn ich also meine Artikel nach cell[0] sortieren muss, welches die ID der Objekte ist, die ich in meiner Datenbank abrufe, muss die id[0] dieselbe sein oder ist sie komplett anders?

By the way, ich bin meine PHP-Array von Objekten mit uasort Sortierung:

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

Ok, ich usort() verwenden musste, so dass die Schlüssel des Arrays neu zugewiesen werden. Sieht aus wie die ID wirklich wichtig für jqGrid ist. Hoffe, das wird jemandem in der Zukunft helfen. Problem gelöst. Frieden