Ist es möglich, ändern Sie die colModel nachdem die Daten geladen hat mit jqgrid?
Habe ich ein jqGrid, wo ich das Modell ändern möchten, nachdem die Daten geladen, aber bevor es analysiert in der Startaufstellung. In otherwords, ich glaube, ich will es tun, in der loadComplete handler. Ich sehe diesen Ansatz: Einstellung JqGrid ist colName und colModel von JSON-Daten, aber ich habe eine Reihe von Gittern, die bereits geschrieben, dass die Verwendung der "Daten laden mit jqGrid" - Ansatz, anstatt die "pre-load Daten und übergeben es an jqGrid" man verwendet es, und ich bin der Hoffnung, um zu vermeiden, re-Codierung, oder macht das ein Unterschied.
(Aus-und einblenden von ausgeblendeten Spalten nicht möglich sein, entweder.)
Ist das möglich?
Mehr details:
Im Grunde, ich weiß nicht, was die Spalten, die ich brauche, bis ich die Daten sehen. Sagen zeige ich den traffic durch den Staat:
Date CA WA NY MN
4/20 100 90 85 72
4/21 95 85 89 70
Platz da, um zu zeigen, vier Staaten, aber möglicherweise gibt es viele mehr in den Daten (oder es könnte weniger sein), so möchte ich Sie aufgelistet in der Reihenfolge der Verkehr. Gerade jetzt, die Daten kommen wie:
{
date : 4-20,
ca : 100,
wa : 90,
ny : 85,
mn : 72
hi : 56,
il : 30
},
{
date : 4-21,
ca : 95,
wa : 85, //note: for a given row, a column might be relatively lower
ny : 89, //than another. The column order is based on the overall
mn : 70
hi : 60,
il : 45
}
oder könnte es sein:
{
date : 4-20,
ny : 110,
hi : 95,
il : 90,
wa : 80
}
Ich habe versucht, die Einrichtung von Spalten wie state1, state2, state3, state4 und dann mit jsonmap neu, aber es hat nicht funktioniert.
loadonce = true, datatype = json
- Könnten Sie beschreiben mehr detailliert, welche änderungen in colModel Sie tun möchten. Einige änderungen sind einfach zu tun, andere nicht so einfach, aber einige der änderungen sind unmöglich, ohne die Neuerstellung der gesamten Gitter. Also Antwort auf Ihre Frage sollten Sie nach mehr details. Es könnte hilfreich sein, wenn Sie post von der jqGrid stehen im Beispiel, die Sie verwenden. Zumindest eines wissen müssen der Datentyp und ob Sie
loadonce:true
. - Hinzugefügt einige details....
- Es ist ein gutes Beispiel. Jetzt verstehe ich auch generell dein problem. Es gibt viele Spalte mit der enthalten den gleichen Typ (wie integer im Beispiel)?
- ja, die Spalten müssen dynamisch sein alle haben die gleiche Struktur.
- Wenn niemand Ihr problem zu lösen werde ich versuchen, machen Sie einen Vorschlag wie es zu lösen morgen. Ich finde deine Frage sehr interessant, also +1 von mir, aber heute bin ich sehr beschäftigt.
- Ok, vielen Dank Oleg. (Im moment, ich mache zwei Abfragen: eine, die bekommt nur die Staaten (nicht aufgeschlüsselt nach Datum), und dann bin ich mit diesem ein Modell zu bauen, und dabei eine zweite Abfrage liefert mehr detail.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich einen Weg, der scheint gut zu funktionieren.
Die Idee, meine Lösung ist folgende. Verwenden Sie
colModel
mit vielen versteckten Spalten mit dem dummy-Namen wie 'cm0', 'cm1', 'cm2', ... Alle Spalten hat die gleichen Daten wie Sie benötigen in Ihrem Fall. Füllen Sie die Daten einfach mehr ich in der Spalte Vorlagen bereits seit jqGrid 3.8.2:Danach erstelle ich jqGrid in der standard-Weg, aber mit der
jsonReader
welche diepage
als Funktion:Die Funktion aus der
jsonReader.page
Gegenzug den gleichen Wert wie wie Standard -jsonReader
, aber ich benutze die Art, mit der Funktion, da die Funktion direkt aufgerufen werden, bevor das Lesen der Haupt-Inhalt der JSON-Daten. Innerhalb des Codes bekomme ich die erste Zeile der Daten und den Namen der Eigenschaft zu füllenjsonmap
Eigentum der entsprechenden Spalte und der Spalte name. Zusätzlich mache ich ein paar dummy-Spalten benötigt werden um alle JSON-Daten sichtbar und der rest dummy-Spalte ausgeblendet. Die Letzte Sache, die getan werden sollte, ist eine Korrektur der Breite des Rasters wurde zuvor berechnet. Also das Gitter wird wie folgt Aussehen:oder so
hängt von der JSON-input-Daten.
Den code der
page
Funktion ist folgende:Innerhalb der
page
Funktion benutze ich kleine Helfer-FunktionenDen arbeiten demo können Sie sehen,hier.
AKTUALISIERT: Eine andere Antwort mit die demo zeigt, wie das Gitter, das hat ein anderes format der Eingangs-Daten: [[], [], ...] (array von arrays) - matrix.