2013-06-07 10 views
6

Nella mia applicazione sto usando List.js per scopi di ordinamento. Tutti i valori "stringa" stanno funzionando bene. Ma ho la "data di modifica" nella colonna.List.js - Per data problema di ordinamento

Quando faccio clic su "modificato per data" - per ordinare, questo è solo considerando i valori di data che cos'è il testo, ex: 1/4/11 .. e ordinamento di conseguenza. a causa di questo approccio sto ricevendo ordini errati.

come posso fare invece dovrebbe ordinare per il valore reale del numero quali sono le date?

Ecco il mio codice:

new List('mfi-col2', { 
     valueNames: ['companyLegalName', 'phazeName', 'contactName', 'number', 'enrollId', 'accountType'] 
         }); 

Invece di "number" è possibile inviare $(".number").data-number? Quindi lascia che usi il timestamp che sto ricevendo dal server?

Oppure qualcuno può suggerire un'alternativa per questo plug-in?

+1

Sei sicuro di voler utilizzare questa libreria? Ha 25 problemi aperti, è in beta e ha avuto il suo ultimo commit 9 mesi fa (escludendo quelle due richieste pull). – Stijn

+0

Appena affrontato lo stesso problema. Qualche soluzione trovata? La persona che ha creato questa lib è di nuovo attiva. Ha appena cambiato l'interfaccia del sito pochi giorni fa. Ma non sono sicuro di come contattarlo. – MJoraid

risposta

6

So che questa è una vecchia domanda, ma questa risposta potrebbe aiutare i nuovi arrivati.

Associato tuo campo della data con Timestamps e poi confrontare/sorta Timestamps. Dipende da te, ma un suggerimento sarebbe quello di aggiungerlo come un secondo campo nascosto nello stesso livello in cui visualizzi ciascuna delle tue date, quindi quando lo fai, l'intero div/tr sarà effettuato.

Ecco un esempio di quello che ho usato:

mio elenco sta lavorando come un tavolo, e qui il <td> è il contenitore, c_start è la data effettiva di essere visualizzati, lo mostro come voglio (gg/mm/aaaa, gg-mm-aa) perché è solo un display. Per quanto riguarda l'ordinamento, io uso c_start_ts e ho nascosto. in c_start_ts Ho inserito il valore di timestamp, è un tipo perfetto. Anche se in un secondo momento si desidera applicare il filtro, sarà più facile gestire i timestamp poiché può essere convertito in un vero int.

<td class="xlarge-head "> 
    <span class="c_start">PUT FORMATTED DATE HERE</span> 
    <span class="c_start_ts hide">PUT TIME STAMP HERE</span> 
</td> 

Esempio

<td class="xlarge-head "> 
    <span class="c_start">01/01/2015</span> 
    <span class="c_start_ts hide">1420070400</span> 
</td> 

E poi passare c_start_ts alle list.js per ordinare, il TD nella tabella otterrà ordinato.

Solo recentemente ha iniziato ad abituarsi a list.js, ha un potenziale, ma credo che in seguito si passerà a un'altra lib.Speranza ho aiutato :)

+0

FYI, ho dovuto farlo in questo modo per farlo funzionare con div:

1444262400 Oct. 8, 2015
Quindi ho passato 'datevar' come uno dei valori nel codice JS. – Eric

+0

Sono contento che la mia risposta sia stata d'aiuto, nel tuo metodo, sembra che tu abbia posizionato sia la data di visualizzazione (formattata) sia quella di timestamp allo stesso livello all'interno dello stesso genitore. – MJoraid

+0

Sì, è vero. – Eric

7

Si potrebbe utilizzare un data-attributo, troppo:

js

valueNames: ['date', { name: 'timestamp', attr: 'data-timestamp' } 

html

<td class="date timestamp" data-timestamp="1427713871">30/03/2015</td> 

Ora sono in grado di ordina tramite timestamp senza un secondo campo o nascosto.

+0

Buona soluzione. Non ero a conoscenza del fatto che list.js possa accettare attributi di dati. – MJoraid