jqGrid filter oder Suche nach Datum funktioniert nicht-client-Seite
Habe ich eine ASP.NET MVC-3 Seite. Auf ihn, ich habe eine Tabelle die ich wiederum in ein jqGrid mit JSON-Daten von einem ajax-Aufruf. Das Netz hat folgenden Aufbau:
myGrid = $('#myGrid');
myGrid.jqGrid({
caption: 'My Grid',
datatype: 'local',
data: data.rows,
height: 250,
pager: '#myPager',
viewrecords: true,
colModel: [
...,
{
label: 'blah',
name: 'blah',
align: 'left',
sortable: true,
editable: false,
width: 85,
formatter: 'date',
sorttype: 'date',
datefmt: 'm/d/Y',
formatoptions: { srcformat: 'm/d/Y', newformat: 'm/d/Y' }
},
...
]
});
//turn on filter toolbar
myGrid.filterToolbar();
Daten.Zeilen zurückgegeben, die von der ajax-call. Dies funktioniert in jeder Hinsicht mit einer Ausnahme. Ich kann den Umbruch der client-Seite Art der client-Seite, und suchen Sie von jedem Feld, außer dem zeige ich die colModel für. Dieses 'bla' - Feld ist ein Datumsfeld, und es zeigt die Daten korrekt, in mm/TT/JJJJ format. Jedoch, wenn ich in so etwas wie 11/17/2010 in der Symbolleiste und drücken Sie die EINGABETASTE, die Suche gibt 0 Datensätze ein.
So grub ich tief in den jqGrid-code, und hier ist, was es erzeugt, bevor es sucht:
{"groupOp":"AND","rules":[{"field":"blah","op":"bw","data":"11/17/2010"}]}
Schließlich, wenn es geht durch jede Zeile und es wertet den Betrieb auf dem Feld, eval(m) && p.push(this) line, m, ist dies:
(String(this.blah).substr(0,10) == String("11/17/2010"))
Grundsätzlich sieht es für mich wie es ist nicht zu erkennen, dass das Feld ein Datum ist. Es ruft der parse-statt parseDate. Jemand irgendwelche Ideen wie man dieses Problem beheben? Ich weiß, das suchen der server-Seite ist einfach, ich kann Sie einfach übergeben Sie die Zeichenfolge, analysieren es, und bam. Aber ich würde gerne noch bleiben, client-Seite, wenn ich kann. Ich war in der Lage, duplizieren Sie das in einigen der Proben, dass Oleg und Tom setzen, so ist es entweder ein Problem, oder bin ich etwas fehlt in der Konfiguration...
- Übrigens jqGrid machen können AJAX-call für Sie, also die Verwendung von
data.rows
werden nicht benötigt. Finden Sie einige links aus stackoverflow.com/questions/2835957/..., stackoverflow.com/questions/4169384/... und trirand.com/blog/?page_id=393/feature-request/rest-support/.... Kann ich weiterhin mit den links... - Eigentlich hatte ich zu wickeln, die Erstellung des Gitters in meinem ajax-call. Der Grund dafür ist, dass ich zu rufen GridUnload() weil ich bin die dynamische Aktualisierung von meinem Dropdown-filter in der filter-Symbolleiste. Ich sah durch die Dokumentation und nicht finden konnte, so etwas wie trigger('reloadToolbar').
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich finde deine Frage interessant, also +1 von mir auf Ihre Frage. Weil Sie gepostet die line
verwendet in
eval
während der lokalen Suche, ich nehme an, Sie verbringen viel Zeit, um zu verstehen, wie die lokale Suche implementiert werden. Weil Sie sehen, dass die Zeile oben (siehe(String(this.blah).substr(0,10) ...
) ist nicht das, was getan werden sollte (der Wert vonString(this.blah)
werden "2010-11-17" statt "11/17/2010"), können Sie überschreiben die entsprechende Funktion von jqGrid (die Funktion_getStr
innerhalb von$.jgrid.from
) und beheben Sie das problem in den Weg.Vor einiger Zeit verbringe ich viel Zeit zur Vorbereitung der entsprechenden die demo, die diese Technik demonstriert. Die demo war bereit, als die Antwort in trirand forum. In der Frage, die man finden wollte Zeichenfolgen wie
'bénevise'
bei der Suche nach'benevise'
. So ein implementieren müssen, um wirklich benutzerdefinierten lokalen Suche. Ich hoffe, dass die Informationen, die wird genug für Sie zu beheben das problem, das Sie beschreiben.AKTUALISIERT: Es scheint mir, dass ich gefunden habe eine viel einfache Lösung. Sollten Sie nur definieren
searchoptions: {sopt: ['eq','ne']}
für die'blah'
Spalte mit den Daten. Dann"bw"
(zunächst noch) nicht für die Spalte verwendet. Das "gleich" und "ungleich" - Vorgänge ordnungsgemäß in der lokalen Suche.AKTUALISIERT 2: Hier ist das Beispiel wo ich
sopt
option.