jqGrid: disabilita i campi del modulo durante la modifica

Attualmente sto sviluppando un’applicazione web progettata per l’amministrazione di distributori automatici e simili. Ho deciso di utilizzare jQuery, jQuery UI e jqGrid per questo progetto, così posso facilmente fornire un’interfaccia utente grande e altamente personalizzabile.
Sfortunatamente, la documentazione di jqGrid è piuttosto obsoleta e non copre tutte le funzionalità di questo ottimo plug-in (perché mi piace molto, anche se la documentazione è piuttosto scarsa).

Comunque, abbastanza informazioni di base, suppongo. Andiamo al punto:
Io uso la barra di navigazione che è integrata in jqGrid per aggiungere, modificare ed eliminare elementi dalla griglia.
Ho funzionato come un fascino, tranne che per una cosa: alcuni campi possono essere abilitati (o visibili) solo quando si aggiunge un nuovo object e non quando si è in modalità di modifica (dovrebbero essere nascosti e / o disabilitati).

Esempio:
La società per cui lavoro sta vendendo torri di distribuzione e ci sono diversi tipi (diverse dimensioni e materiale) di queste torri. Quando una nuova torre viene aggiunta a una posizione e inserita nel sistema, il tipo deve essere impostato. Ma la torre non cambia magicamente nel tempo, quindi questo campo non può essere modificato in seguito.

Qualcuno sa se questo comportamento può essere realizzato cambiando alcuni parametri di inizializzazione?
Forse è un’opzione di modifica non documentata ( editoptions ) o form-option ( formoptions )?
O forse hai una soluzione semplice per questo?

Mi piacerebbe sentire i tuoi suggerimenti / soluzioni!
Grazie =)

    Puoi implementare i tuoi requisiti in diversi modi. Ad esempio, all’interno dell’evento beforeShowForm è ansible hide o mostrare il

     jQuery("#list").jqGrid({ colModel: [ { name: 'Name', width: 200, editable: true }, //... }).jqGrid('navGrid','#pager', { edit: true, add: true, del: false}, { // edit option beforeShowForm: function(form) { $('#tr_Name', form).hide(); } }, { // add option beforeShowForm: function(form) { $('#tr_Name', form).show(); } }); 

    dove l’ID “tr_Name” è costruito dal prefisso “tr_” e “Name” – la proprietà name della colonna dal colModel .

    AGGIORNATO : Nella risposta e in un altro viene mostrato un altro modo in cui le proprietà possono essere modificate dynamicmente immediatamente prima dell’inizializzazione del assembly.

    AGGIORNATO 2 : Free jqGrid consente di definire editable come funzione di callback o come "disabled" , "hidden" o "readonly" . Vedi l’articolo wiki . Permette di implementare gli stessi requisiti più facilmente.

    Per rendere il campo modificabile o meno, questo è quello che ho terminato la codifica dopo aver cercato una risposta per un po ‘(per disabilitare la modifica nella modifica in-row, ma permetterlo su’ Aggiungi ‘) e non trovare la risposta che mi serviva:

     colModel :[ {name:'id', index:'id', editable:false, ... }).navGrid("#pager",{edit:false,add:true,del:false,search:false,refresh:true}, {}, // edit { beforeInitData: function(formid) { $("#list").jqGrid('setColProp','id',{editable:true}); }, afterShowForm: function (formid) { $("#list").jqGrid('setColProp','id',{editable:false}); }, 

    Ecco un esempio:

    http://www.ok-soft-gmbh.com/jqGrid/CustomFormEdit.htm

      beforeShowForm: function(form) { $('#tr_Name', form).hide(); } 

    Visibile ma non modificabile:

     { // edit option beforeShowForm: function(form) { $('#col_name', form).attr("disabled", true); } } 

    Questo funzionerà con il jqgrid gratuito, semplice e semplice:

    Questo particolare esempio consentirà la modifica solo nel modulo “aggiungi”:

     editable: function (options) { // Allow edit only for "add" not for "edit" if (options.mode === "addForm") { return true; } else if (options.mode === "editForm") { return false; } else { return false; }