2014-08-29 4 views
0

Je veux faire une action après la modification en ligne, mais quand j'utilise ce code, après avoir édité la ligne juste coincé en mode édition. Si je supprime onSelectRow, la modification de ligne fonctionne parfaitement.jqGrid onSelectRow ne fonctionne pas

onSelectRow: function(rowid){ 

    $(grid_selector).jqGrid('editRow', rowid, true, null, null, null, {}, aftersavefunc); 

    function aftersavefunc(rowid, result) { 
     alert("X"); 
     $(grid_selector).trigger("reloadGrid"); 
    } 
}, 
+0

Est-ce que vous obtenez le popup 'alert (" X ");' continuellement alors qu'il est bloqué en mode d'édition? – Brandon

+0

non Je ne reçois aucune alerte. – Mert

Répondre

0

tout d'abord, vous avez écrit:

Si je supprime onSelectRow, édition de ligne fonctionne parfaitement.

sonner soupçonné parce que vous commencez à ligne d'édition à l'intérieur de editRow. Si l'édition en ligne fonctionne encore après que vous ayez supprimé le rappel onSelectRow, vous devez rechercher autre partie de votre code où editRow sera appelée directement indirectement. Par exemple vous pouvez utiliser formatter: "actions" ou inlineNav qui commence editRow pour vous. Pour informer jqGrid d'utiliser votre aftersavefunc vous devez utiliser les paramètres correspondants de inlineNav ou formatter: "actions". Par exemple inlineNav fournir editParams et addParams options. Généralement, on définit un ensemble op paramètres d'édition en ligne (voir la variable editOptions dans le code ci-dessous) et on l'utilise à la fois appel direct et indirect de editRow:

var editOptions = { 
     keys: true, 
     successfunc: function() { 
      var $self = $(this); 
      setTimeout(function() { 
       $self.trigger("reloadGrid"); 
      }, 50); 
     } 
    }, 
    $grid = $("#list"); 

$grid.jqGrid({ 
    ... 
    onSelectRow: function (rowid) { 
     $(thus).jqGrid("editRow", rowid, editOptions); 
    } 
}); 

$grid.jqGrid("navGrid", "#pager", { edit: false, add: false }); 

$grid.jqGrid("inlineNav", "#pager", { 
    addParams: { 
     position: "last", 
     addRowParams: editOptions 
    }, 
    editParams: editOptions 
}); 

Par ailleurs, on peut cliquer sur le bouton d'édition d'origine ajouté par inlineNav au lieu d'appeler directement le editRow. Voir the answer pour l'exemple de code correspondant (à l'intérieur du rappel onSelectRow).