10
votes

Bouton JQuery Cliquez sur Actualiser de JQGRID uniquement en tirant une fois

J'ai le code JQuery suivant que j'utilise pour peupler un JQGrid. Cela fonctionne parfaitement sur ma page ASP.NET MVC au premier clic du bouton. Mon
Le problème est que tout autre clic passé au-delà de la première fois qu'il semble fonctionner via le code JQuery lorsque vous cliquez sur le bouton, mais cela ne le rend jamais à la page de poste. Des idées pourquoi? XXX


0 commentaires

3 Réponses :


21
votes

La raison pour laquelle la grille ne recharge pas est que vous appelez la mauvaise méthode. La méthode JQGRID fait environ ceci:

  1. examinez la table pour voir si elle est déjà une grille; Si oui, sortez.
  2. Tournez la table en une grille.
  3. peupler la première page des données.

    Donc, la deuxième fois que vous appelez la méthode, il ne fait rien, selon l'étape 1.

    à la place, vous devriez appeler $ ("# liste"). Trigger ("ReloadGrid") sur le second et tous les clics suivants.

    Maintenant, à cause de votre MTYPE dans les options de la grille, la grille va faire un message, pas un post. Donc, si le message provient du bouton lui-même (en d'autres termes, il s'agit d'une entrée de type Soumettre), vous devez retourner true pour indiquer que la soumission devrait continuer comme d'habitude.


0 commentaires

6
votes

Voici la solution:

<script type="text/javascript">
        var firstClick = true;
        $(document).ready(function() {
            $('#btnSubmit').click(function() {
                 if (!firstClick) {
                     $("#list").trigger("reloadGrid");
                 }
                 firstClick = false;
                /* Refreshes the grid */
                $("#list").jqGrid({
                    /* The controller action to get the grid data from */
                    url: '/CRA/AddPart',
                    data: { partNumber: "123"},
                    datatype: 'json',
                    mtype: 'GET',
                    /* Define the headers on the grid */
                    colNames: ['col1', 'col2', 'col3', 'col4'],
                    /* Define what fields the row columns come from */
                    colModel: [
                  { name: 'col1', index: 'invid', width: 290 },
                  { name: 'col2', index: 'invdate', width: 290 },
                  { name: 'col3', index: 'amount', width: 290, align: 'right' },
                  { name: 'col4', index: 'tax', width: 290, align: 'right'}],
                    height: 'auto',
                    rowNum: 10,
                    rowList: [10, 20, 30],
                    sortname: 'id',
                    sortorder: "desc",
                    viewrecords: true,
                    imgpath: '../../Scripts/jgrid/themes/steel/images',
                    caption: 'Core Return Authorization Contents:',
                    cellEdit: true
                });
            });
        });

    </script>


0 commentaires

1
votes

Parce que j'ai besoin de poster de nouvelles valeurs à l'action pour moi, cela ne fonctionne pas "ReloadGrid".

Je viens de supprimer tout le contenu et de créer à nouveau la table vide.

dans le si Je vérifie si la grille est là pour masquer le "graphique vide" div (il affiche juste un message). Dans l'autre, je viens de nettoyer la DIV qui entoure la table et j'ajoute à l'intérieur de la table. Lorsque le plugin trouve la table vide, il charge complètement la grille complètement.

LoadTableAtata est la fonction qui a la fonctionnalité commune pour créer et charger la grille.

probablement cette solution n'est probablement pas Élégant, mais quand le temps se précipite ... xxx


0 commentaires