JQGrid, comment faire modifier une colonne dans la boîte de dialogue d'ajout, mais pas lors des modifications (en ligne)

J'ai un jQGrid avec une colonne que je veux seulement être modifiable lors de l'ajout d'une nouvelle ligne.

J'ai vu des exemples de comment faire lorsque les modifications et les ajouts se produisent dans une boîte de dialogue, mais existe-t-il une façon de le faire avec une édition en ligne?

J'ai essayé d'utiliser grid.setColProp () dans beforeShowForm :, mais cela ne fonctionne pas (la colonne reste en lecture seule et n'est pas présente dans la boîte de dialogue d'ajout).

Exemple d'activation / désactivation de la colonne basée sur la boîte de dialogue:
Http://www.ok-soft-gmbh.com/jqGrid/CustomFormEdit.htm

Parce que vous utilisez l'exemple de mes anciennes réponses ( ceci et ceci ), je pense que je devrais répondre également à votre question.

Dans l' ancien exemple, tous les champs, qui peuvent être modifiés lors des boîtes de dialogue Ajouter ou Modifier, ont une propriété editable:true . Les champs qui doivent être affichés uniquement dans la boîte de dialogue Ajouter seront cachés à l'intérieur du handle d' événement beforeShowForm . De la même façon, nous pouvons passer temporairement certains champs à editable:false avant l'appel de la méthode editRow et réinitialiser à l' editable:true immédiatement après l'appel:

 onSelectRow: function(id) { if (id && id !== lastSel) { grid.jqGrid('restoreRow',lastSel); var cm = grid.jqGrid('getColProp','Name'); cm.editable = false; grid.jqGrid('editRow', id, true, null, null, 'clientArray'); cm.editable = true; lastSel = id; } } 

Vous pouvez le voir en direct ici .

MISE À JOUR: Free jqGrid permet de définir une fonction de rappel comme fonction de rappel. Voir l'article wiki . Il permet de rendre la colonne modifiable dans certaines lignes et de ne pas être modifiable pour d'autres lignes.