我在这里一直在阅读很多关于同样问题的帖子,但没有人帮我解决了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();
}
});
欢迎任何帮助/建议;) 干杯
答案 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来说真的很重要。
希望这将有助于未来的人。
问题解决了。
和平