jQuery laden von Daten in jqGrid
Ich bin eine erste Zeit Benutzer von jqGrid, so weit ich ging durch offizielle Beispiele, ich bin daran interessiert, das laden von Daten in grid-entweder mithilfe von json.
Ich bin momentan auf der Suche, das Laden von Daten(JSON-Daten):
http://trirand.com/blog/jqgrid/jqgrid.html
Hier ist ein wenig javascript erstellt grid :
jQuery("#list2").jqGrid(
{
url : '<c:url value="${webappRoot}/getdetails" />',
datatype : "json",
colNames : [ 'id', 'Location', 'Country Code', 'Type', 'Interval',
'Version', 'Last Active', 'Last Login', 'NOTE' ],
colModel : [
{ name : 'id', width : 10 },
{ name : 'location', width : 75 },
{ name : 'countryCode', width : 50 },
{ name : 'type', width : 40 },
{ name : 'interval', width : 30 },
{ name : 'version', width : 45 },
{ name : 'lastactive', width : 50, align : "right" },
{ name : 'lastlogin', width : 50, sortable : false },
{ name : 'note', width : 50, sortable : false}
],
rowNum : 10,
rowList : [ 10, 20, 30 ],
pager : '#pager2',
width: gridWidth,
sortname : 'id',
viewrecords : true,
sortorder : "desc",
caption : "JSON Example"
});
jQuery("#list2").jqGrid('navGrid', '#pager2',
{ edit : false, add : false, del : false});
${webappRoot}/getdetails
verwandelt Pfad zu meinem Projekt wie http://localhost/myProject/getdetails
ich bin mit spring MVC(könnte relevant sein).
Wenn ich mir in firebug das erzeugt diese http-Anforderung :
GET http://localhost/newProject/getdetails?_search=false&nd=1304638787511&rows=10&page=1&sidx=id&sord=desc
200 OK
135ms
Hier ist die Antwort :
{
"id": 1,
"location": "office_2782",
"countryCode": "UK",
"quarter": "500",
"version": "v3.05",
"lastactive": "yesterday",
"lastlogin": "today",
"note": "no note",
"type": "read-only"
}
Wenn ich navigieren Sie zur Registerkarte "JSON" es scheint alles gleich wie dieser, keine Ahnung, was ich falsch mache?
Ich versuche zu laden, nur einen Datensatz für den start, und ich nicht bekommen kann es arbeiten, jede Hilfe ist appriciated.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstens sind Sie nicht die erste person, die Probleme hat, zu verstehen, wie die JSON-Daten aufgebaut werden soll, was die gesendeten Parameter von jqGrid auf den server bedeuten und so weiter. Die offizielle Dokumentation jqGrid enthalten nicht genug Einleitung, also die ersten Schritte der jqGrid-Nutzung kann ein wenig schwieriger als man erwartet.
Das problem, das existiert in Ihrer JSON-Antwort vom server ist, dass es enthält nur ein Element von Daten anstelle von einem array (oder Liste) von Gegenständen, die die grid-Zeilen. Die Daten sollten mindestens
oder besser als
oder sogar als
oder
Der Grund für solche seltsamen auf den ersten Blick von JSON-Daten ist, dass jqGrid wurde zur Unterstützung von paging, Sortieren und filtern/suchen von Daten implementiert auf dem server. Also die Parameter
rows=10&page=1&sidx=id&sord=desc
aus der url an den server gesendet bedeuten, dass jqGrid fragt den server ab, um die erste Seite (Seite=1) der Daten, die mit der Seite mit 10 Zeilen pro Seite Zeilen (=10). Die Daten sollten zuvor sortiert nachid
(sidx=id) in absteigender Reihenfolge (sord=desc). Wenn Sie kleine Anzahl von Zeilen (unter einigen hundert zum Beispiel), die Sie verwenden können client-basierte Sortierung, Paginierung und Filterung wenn Sie hinzufügenloadonce:true
parameter der jqGrid, aber die server-basierte Implementierung ermöglicht das arbeiten mit sehr großen datasets, die viele hundert Tausende von Zeilen von Daten mit einer sehr guten Leistung.Empfehle ich Ihnen zu Lesen, mein diese Antwort, wo ich versuchte, zu erklären, wie die zusätzlichen Elemente, die der server-Antwort "total", "Seite" und "records" verwendet werden. Die Werte der Parameter werden codiert im JSON-entweder als zahlen oder als Zeichenketten (auf Ihr Geschmack).
Wenn der Benutzer klickt auf den Spaltenkopf der Spalte "Verzeichnis" zum Beispiel jqGrid senden neue Anfrage auf den server mit
sidx=location&sord=asc
in der url. So ist es wichtig zu verstehen, dass die server gestellt werden können, um die Daten für das raster nicht einmal pro raster, sondern viele Male, und die Anforderung enthält einige Parameter, die vom Benutzer gewählt wurde, die arbeiten mit den jqGrid.Definition von
jsonReader
(und manchmal zusätzlichejsonmap
Parameter für jede Spalte) beschreiben Sie die Struktur der server-Antwort. Mit Hilfe der Informationen, jqGrid die Antwort Lesen und das raster ausfüllen.Die demo zeigt, dass mit den entsprechenden
jsonReader
Sie können Lesen, auch Ihre ursprüngliche JSON-Daten.Den letzten Rat von mir wäre zu überlegen, am Anfang zu verwenden loadError Ereignis-handle, das hilft, um den Benutzer zu informieren, über die Fehler berichtet, durch den server. In die Antwort habe ich gezeigt, wie es umgesetzt werden kann, im Fall von ASP.NET MVC. Ich glaube nicht, verwenden Sie spring MVC mich, so kann ich nicht geben Ihnen direkte Beispiele, wie eine bessere Umsetzung der Fehlerberichterstattung in spring MVC, aber die Grundidee ist die gleiche in jeder server-Technologie: im Falle von Fehlern, die der server reagieren soll, mit der Antwort, dass eine Fehler HTTP-status-code. Innerhalb der Implementierung des loadError Veranstaltung Griff Sie entschlüsseln die Reaktion und Anzeige der Informationen über den Fehler.
loadonce: true
Szenario ist die beste Wahl, die bietet die beste Leistung.