Domanda

c'è un modo per modificare i valori di un campo di stato nella colModel dinamicamente? Diciamo che abbiamo un modello col con un campo come:

... field ... name: "state",type: "select",
editoptions: {value: "0:state0;1:state1;2:state2;3:state3;4:state4"}

Quindi ho un campo di selezione per i miei stati con questi valori. Ma ho bisogno di decidere dynamicaly che selectfields dovrebbe essere possibile. Se lo stato della riga corrente è State0, devono essere visualizzati solo State0 e State1. Se lo stato è stato1, display dovrebbe essere State0, State1 e Stato2 e così via fino allo stato 4 che dovrebbe visualizzare solo stae3 e Stato4.

Sono io in grado di risolvere questo con un formattatore, o c'è qualche altro modo per fare una cosa del genere.

Per rendere più difficile, lascia dicono gli stati che vengono visualizzati sono generalmente dependend su un utente che ha effettuato l'accesso, nella mia applicazione. In un certo senso l'utente può solo vedere State0, Stato2 e Stato4. Questo può essere reso ancora più complicato, causa la transistion tra state3 e Stato4 non è consentito all'utente corrente.

Tuttavia, gli Stati themself sono dynamicaly neanche. Sarebbe utile per generare dinamicamente il javascript per un oggetto nella mia domanda, che rappresenta un generale stato di classe e utilizzare questo oggetto per generare la mia uscita necessaria nel formattatore? Così posso incapsulare la logica in questo oggetto, come la mia uscita viene generato e additionaly ottengo solo gli stati che l'utente è in grado di vedere.

In caso di farmi prendere due piccioni con una fava.

Dopo aver riletto Spero proprio chiaro quello che voglio fare, se non mi dica e io spiegherò con più dettagli.

Una soluzione per il calcestruzzo problema, thx Oleg:

    editoptions : {

    value : function(){
        //a function can be called here:
        currentRow=$("#order_items").getGridParam('selrow');
        currentState=$("#order_items").getCell(currentRow,"state");
                    nastyGeneratedThings=function(){
                                     ... do some nasty things with currentState
                                     ... and generate what you want
                                     }
                    return nastyGeneratedThings
    }

ho incontrato qualche problema, causa la funzione è stato chiamato solo una volta. Quindi devo impostare l'opzione recreateForm in Navgrid.

navGrid("#pager", {
            edit : true,
            add : true,
            del : true
        }, {
            height : 500,
            width : 500,
            // recreate the form every time when edit button is clicked.
            // Default is false.
            recreateForm : true
        }
        });

Dopo che la mia funzione spara ogni volta che fate clic su Modifica. Spero che questo aiuti qualcuno in qualche modo.

È stato utile?

Soluzione

La proprietà value dal editoptions può essere non solo una stringa, ma anche una funzione. La funzione può restituire una stringa del tipo "0: State0; 1: stato1; 2: Stato2; 3: state3; 4: Stato4" o un oggetto simile {"0":"state0", "1":"state1", "2":"state2", "3":"state3", "4":"state4"}. L'ultimo formato dal modo in cui ha alcuni vantaggi: è possibile, ad esempio l'uso ':', ';' all'interno dei valori.

La funzione non ha parametri, ma è possibile ottenere la riga selezionata corrente con un coll come metodo getGridParam('selrow') e con getCell(rowid,iCol) o getCell(rowid,"state") il valore corrente della colonna "stato".

Scopri di più la descrizione della proprietà value su http :? //www.trirand.com/jqgridwiki/doku.php id = wiki: common_rules # editoptions ). Probabilmente questo può risolvere il problema?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top