Ho una pagina ASP.NET MVC 3. Su di esso, ho una tabella che trasformo in un jqGrid utilizzando i dati JSON da una chiamata Ajax. La griglia ha la seguente configurazione:jq Filtro Grid o ricerca per data non funzionante lato client
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();
data.rows viene restituito dalla chiamata ajax. Funziona in tutti i modi tranne uno. Posso impaginare lato client, ordinare il lato client e cercare in ogni campo tranne quello che mostro colModel. Questo campo "blah" è un campo data e visualizza correttamente le date, in formato gg/mm/aaaa. Tuttavia, quando digito qualcosa come 11/17/2010 nella barra degli strumenti e premere invio, la ricerca restituisce 0 record.
Così ho scavato in profondità nel codice jqGrid, e qui è quello che genera prima che cerca:
{"groupOp":"AND","rules":[{"field":"blah","op":"bw","data":"11/17/2010"}]}
Alla fine, quando si passa attraverso ogni riga e si valuta l'operazione sul campo, eval (m) & & p.push (questo) la linea, m è questa:
(String(this.blah).substr(0,10) == String("11/17/2010"))
In pratica, mi sembra che non è riconoscendo che il campo è una data. Chiama analisi invece di parseDate. Qualcuno ha qualche idea su come risolvere questo problema? So che cercare lato server è facile, posso solo passare quella stringa, analizzarla e bam. Ma mi piacerebbe rimanere dalla parte dei clienti se posso. Sono stato in grado di duplicare questo in alcuni dei campioni che Oleg e Tom hanno messo, quindi è un problema o mi manca qualcosa nella configurazione ...
Per il modo in cui jqGrid può effettuare chiamate AJAX, l'utilizzo di 'data.rows' non sarà necessario. Vedi alcuni link da http://stackoverflow.com/questions/2835957/jquery-with-asp-net-mvc-calling-ajax-enabled-web-service/2836817#2836817, http://stackoverflow.com/questions/ 4169384/how-can-i-bind-my-view-model-to-a-jqgrid/4169848 # 4169848 e http://www.trirand.com/blog/?page_id = 393/funzione-request/resto-support/# p21762. Posso continuare con i collegamenti ... – Oleg
In realtà, ho dovuto completare la creazione della griglia all'interno della mia chiamata ajax. Il motivo è che devo chiamare GridUnload() perché sto aggiornando dinamicamente il mio filtro a discesa nella barra degli strumenti del filtro. Ho esaminato la documentazione e non sono riuscito a trovare qualcosa come trigger ('reloadToolbar'). – Milimetric