2011-05-03 25 views
14

Tengo un problema al ordenar las fechas usando jqGrid. Teniendo en cuenta las siguientes fechasjqGrid no ordena las fechas correctamente

jqGrid está clasificando las fechas de la siguiente manera

01/01/2010 
01/01/2011 
01/02/2010 
01/02/2011 

Yo esperaría ver

01/01/2010 
01/02/2010 
01/01/2011 
01/02/2011 

Mi formato de fecha es dd/mm/aaaa y tengo las opciones de formato de seguimiento -

{ name:'myDate', index: 'myDate', sortable: true, sorttype: 'date' } 

¿He perdido algo aquí o es una limitación de jqGrid?

+0

¿Cómo se ordenará si utiliza el formato de fecha GMT estándar? En mi opinión, jgrid lo usa para clasificar. – reporter

Respuesta

22

Has cometido el error típico. El problema es que jqGrid espera la entrada de fechas en el formato de fecha ISO 8601: Y-m-d.

En caso de publicar los datos de entrada de jqGrid en el formato "dd/mm/aaaa", debe agregar datefmt: 'm/d/Y' propiedad para la definición de columna.

La mejor manera sería llenar los datos actualizados de la red en el formato ISO y para convertir la entrada en cualquier otro formato sólo para mostrar la fecha en jqGrid usando los siguientes ajustes

formatter:'date', formatoptions: {newformat:'m/d/Y'}, datefmt: 'd-M-Y' 

Compare el código fuente de las demostraciones de árbol: this, this y this.

+0

excelente, gracias por su ayuda :-) –

+0

@Gilbert Liddell: ¡De nada! – Oleg

+2

@Gilbert Liddell: Una observación más general. Veo que no usa su derecho de "votos", que comenzó con 15 puntos de reputación. Creo que deberías saber algo importante. [Aquí] (http://stackoverflow.com/faq#howtoask) puede encontrar una regla simple: "A medida que vea nuevas respuestas a su pregunta, vote las útiles haciendo clic en la flecha hacia arriba que se encuentra a la izquierda de la respuesta " Las preguntas "aceptado" y ** no votado "se interpretarán principalmente como simplemente" cerradas "y serán ubicadas en el último lugar por el motor de búsqueda, porque la respuesta se interpreta como ** no útil **. – Oleg

1

jqGrid no admite la ordenación por fecha y hora sino por fecha. Por lo tanto, puede usar una alternativa como se indica en su PDF, es decir, como se muestra en el ejemplo siguiente. Si sus datos en la grilla ya están ordenados por fecha y hora, y también tiene una columna con el índice de todas las filas como en Números como 1, 2, 3, .... n. Puede ordenar la fecha y hora en la columna de índice. Esto siempre asegurará la orden asc o desc para datetime.

Puede ordenar la FECHA de jqGrid y la hora o fecha por otro contenido de Columna. Tal como se indica en el ejemplo a continuación en onSortCOl:

 onSortCol: function(name,index) { if(name == 'createDateTime') { jQuery("#viewNotesGrid").setGridParam({sortname:"ID"}); } } 
2

jqGrid no admite la clasificación por fecha y hora, pero con sólo la fecha.

En realidad, me he dado cuenta que jqGrid hace soporte para el ordenado por datetimes.

Tenemos un servicio web JSON que las fechas eran (molesto) que llegan en este formato:

'2/24/2015 9:48:04 AM' 

jqGrid era perfectamente capaz de ordenar por fecha & vez que utiliza este:

colModel: [ 
    { name: "dt", sorttype: 'date', datefmt: 'm/d/yyyy h:i:s AmPm' }, 

jqGrid_Sorting

Esta aplicación en particular estaba usando jqGrid 4.4.5 (desde 2008) por lo esta no es una nueva característica.

Espero que esto ayude.

+0

Muchas gracias, Esto funciona como un encanto. –

+0

Tengo una cita como '9/24/2015 10:05:47 AM',' 1/3/2015 6:53:00 AM', así que ¿crees que el formato debe ser 'm/d/aaaa h: ii: ss AmPm' –

+1

Creo que debería ser "m/d/aaaa h: i: s AmPm", pero podría estar equivocado. Pruébalo y mira. De acuerdo con su documentación, jqGrid utiliza el formato de fecha de PHP, por lo que puede utilizar esto como referencia: http://php.net/manual/en/function.date.php –

Cuestiones relacionadas