Ho una semplice griglia DataTable che contiene colonne di date. Ho fornito due valori per la data nel mio set di dati JSON, uno per la visualizzazione e uno appositamente progettato in modo che DataTables possa ordinarlo. La mia applicazione web consente agli utenti di scegliere diversi formati di date, quindi deve essere flessibile.Come posso ottenere jQuery DataTables per ordinare sul valore nascosto, ma cercare il valore visualizzato?
Questo è il mio dato JSON che DataTables ricava dal server Web tramite sAjaxSource
.
{
Reports : [
{ Date: { Sort = "20101131133000", Display : "11/31/2010 1:30 PM" } },
{ Date: { Sort = "20100912120000", Display : "1200 EST 2010-09-12" } },
]
}
E 'facile dire DataTable per ordinare in base alla proprietà Date.SortValue
e per rendere la proprietà Display
visibile all'utente utilizzando fnRender()
. Quindi questo mi porta a metà strada verso il mio obiettivo.
var dataTableConfig = {
sAjaxSource: "/getreports",
sAjaxDataProp: "Reports",
aoColumns: [
{ mDataProp: "User" },
{ mDataProp: "Date.Sort",
bSortable: true,
sName: "Date",
bUseRendered: false,
fnRender: function (oObj) {
return oObj.aData[oObj.oSettings.aoColumns[oObj.iDataColumn].sName].Display;
}
}
]
};
Ecco il mio problema. Desidero consentire all'utente di immettere un filtro (utilizzando l'input di filtro incorporato fornito da DataTables) in base al valore visualizzato, ma non è possibile.
Ad esempio. Se un utente ha inserito "EST", otterrebbe risultati pari a zero perché i filtri di dati si basano sul valore specificato in mDataProp
non basato sul valore restituito da fnRender
.
Qualcuno può aiutarmi a capire come ordinare e filtrare una colonna di date? Grazie.
La risposta corretta a questa domanda è stata modificata poiché i datatables sono stati aggiornati. Non sono sicuro di quale criterio SO si stia modificando la risposta accettata e di aggiornare la risposta, ma l'uno o l'altro sarebbe utile forse? –
Sono felice di cambiare la risposta accettata. Non uso più DataTable, puoi consigliare quale è meglio? – jessegavin
La risposta di CW Spear contrassegnata 'Nov 5 '13 alle 7: 12' sembra essere corretta e ha funzionato per me. –