2010-07-27 23 views
2

Existe-t-il un moyen de forcer jqGrid à ne pas supprimer les données de sous-grille lorsque sa ligne est basculée? Mon procédé courant pour charger la grille de données est la suivante:La mise en cache de sous-grille ou l'arrêt des données de sous-grille ne doivent pas être supprimées (jqGrid)

1) Configuration réseau principal, la mise en sous-maille en place par programmation avec un ID que je peux utiliser plus tard

2) Charger des données dans la grille principale localement via json

3) Ajouter des données à la sous-grille locale via json

Étant donné que je charge le sous-réseau localement au lieu d'une URL lorsque l'utilisateur bascule (masque puis réaffiche) la grille ne contient aucune donnée et Je veux qu'il affiche les données d'origine fournies au sous-réseau.

Je sais que cela peut sembler une façon bizarre de chargement des données, mais il y a une raison

Ce que je fais currenty avec jqGrid affiche des tonnes et des tonnes d'informations d'assurance sur une seule page Web (essentiellement c'est un rapport). Cette page Web devrait charger toutes les données automatiquement et j'ai beaucoup d'exemples où je dois fournir la fonctionnalité de sous-grille. J'ai compris comment je peux le faire en forçant manuellement l'événement click à se produire pour que le sous-réseau soit affiché, mais encore une fois, si l'utilisateur clique sur le sous-réseau, il disparaît et ne revient pas.

Si vous avez des suggestions pour cela, s'il vous plaît faites le moi savoir. En outre, si vous pensez qu'il existe de meilleurs moyens d'afficher automatiquement toutes les données, faites-le moi savoir. Jusqu'à présent j'ai trouvé que jqGrid était facile à utiliser, mais je l'ai forcé à faire des choses qu'il ne faisait pas nativement, comme ajouter des valeurs totales dans la rangée de bas de page.

Merci d'avance pour votre aide.

Répondre

2

Ce que vous voulez faire est d'empêcher jqGrid de recharger des données de sous-grille lorsqu'une ligne est développée. Le bouton de contrôle pour cela est dans la propriété subGridOptions du jqGrid. L'objet subGridOptions possède une propriété booléenne appelée reloadOnExpand qui contrôle ce comportement exact.

Lorsque vous initialisez votre objet jqGrid, il suffit de définir cette propriété sur false, comme ci-dessous:

jQuery("#gridId").jqGrid({ 
    // ... other properties ... 
    subGrid: true, 
    subGridOptions: { 
     reloadOnExpand: false // Prevent jqGrid from wiping out the subgrid data. 
    }, 
    subGridRowExpanded: subGridExpandCallback, 
    // ... other properties ... 

Le seul endroit où je pouvais trouver ce code a été en faisant une « Afficher la source » sur la page à leur site de démonstration qui mentionne ce comportement. La page de démonstration au moment de cette publication est ici: http://www.trirand.com/blog/phpjqgrid/examples/hierarchy/subgrid_loadonce/default.php