Frage

ist es eine Möglichkeit, die Werte eines Statusfeldes im colModel dynamisch zu ändern? Lets sagen, dass wir mit einem Feld ein col Modell haben wie:

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

Also habe ich mit diesen Werten ein Auswahlfeld für meine Zustände bekommen. Aber ich muss dynamicaly entscheiden, welche select möglich sein sollte. Wenn der Zustand der aktuellen Zeile Zustand 0 ist, sollten nur State0 und state1 angezeigt werden. Wenn staatlicher state1 ist, sollte Anzeige seinen Zustand 0, Zustand 1 und Zustand 2 und so weiter bis zu dem Zustand 4, die nur stae3 angezeigt werden sollen und STATE4.

Kann ich dies mit einem Formatierer lösen, oder ist es eine andere Möglichkeit, so etwas zu tun.

Um es schwieriger zu machen, kann die Staaten sagen, die im Allgemeinen sind abhängig auf einem Benutzer angezeigt werden, die in, in meiner Anwendung angemeldet ist. In einer Art und Weise kann der Benutzer nur State0, state2 und STATE4 sehen. Dies kann sogar noch komplizierter, weil die transistion zwischen STATE3 und STATE4 wird auf den aktuellen Benutzer nicht erlaubt hat.

Dennoch heißt es in der themself dynamicaly entweder sind. Wäre es hilfreich sein, um dynamisch die Javascript für ein Objekt in meiner Anwendung zu erzeugen, die eine allgemeinen Zustand Klasse darstellt und dieses Objekt verwenden, um meine benötigte Ausgabe in den Formatierungs zu erzeugen? Also habe ich die Logik innerhalb dieses Objekt einkapseln kann, wie meine Ausgabe erzeugt und Additionaly erhalte ich die Zustände nur der Benutzer in der Lage, zu sehen.

Wenn Sie mich mit einer Klappe schlagen zwei Vögel zu töten.

Nach rereading Ich hoffe, seine klar, was ich tun will, wenn es mir nicht sagen, und ich werde es mit mehr Details erklären.

Eine Lösung für das konkrete Problem, thx to 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
    }

Ich lief in einige Schwierigkeiten, weil die Funktion nur einmal aufgerufen wurde. Also habe ich die recreateForm Option in Navgrid gesetzt haben.

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
        }
        });

Danach meine Funktion jedes Mal feuert klicken I bearbeiten. Hoffe, das hilft jemand irgendwie.

War es hilfreich?

Lösung

Die value Eigenschaft aus der editoptions kann nicht nur eine Zeichenfolge sein, sondern auch eine Funktion. Die Funktion kann entweder eine Zeichenfolge zurück, wie "0: Zustand 0; 1: state1; 2: state2; 3: STATE3; 4: STATE4" oder ein Objekt wie {"0":"state0", "1":"state1", "2":"state2", "3":"state3", "4":"state4"}. Das letzte Format, das von der Art und Weise hat einige Vorteile: Sie können zum Beispiel der Verwendung ‚:‘, ‚;‘ innerhalb der Werte.

Die Funktion hat keine Parameter, aber Sie können die aktuell ausgewählte Zeile mit einem coll wie getGridParam('selrow') Verfahren und mit getCell(rowid,iCol) erhalten oder den aktuellen Wert der Spalte „Status“ getCell(rowid,"state").

Sehen Sie mehr in der Beschreibung der value Eigenschaft auf http : //www.trirand.com/jqgridwiki/doku.php id = wiki: common_rules # EditOptions ). Wahrscheinlich kann dies Ihr Problem lösen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top