2012-02-27 4 views
5

non so se si tratta di un bug, ma ho un datatable + ajax con le seguenti opzioni:L'ordinamento Ajax lato server, è iSortCol_0 che considera le colonne hiddend?

 "bServerSide": true, 
    "sAjaxSource": url, 
    "fnServerData": function (sSource, aoData, fnCallback) { 
     jQuery.ajax({ 
      "dataType": 'json', 
      "type": "POST", 
      "url": sSource, 
      "data": aoData, 
      "success": fnCallback 
     }); 
    }, 
    "sPaginationType": "bootstrap", 
    "aoColumns": [ 
        { "sName": "Id", "sType": 'numeric', "bVisible": false }, 
        { "sName": "PostingDate", "sType": 'Date' }, 
        { "sName": "Userid", "sType": 'string', "bVisible": false }, 
        { "sName": "DisplayName" }, 
        { "sName": "Description" }, 
        { "sName": "MainTag" }, 
        { "sName": "Tags" }, 
        { "sName": "HowMuch" } 
       ] 

Ho una forma in cui gli utenti possono aggiungere le righe e al momento della presentazione che ho aggiungere dati al database con una chiamata Ajax e quindi chiamare: jQuery ('# mydatatable'). dataTable(). fnReloadAjax();

Quando un utente clicca per ordinare la tabella per colonna "MainTag" il mio lato server ajax riceve:

iSortCol_0 4 
iSortingCols 1 

E tutto bSortable_ # ci sono, correttamente 0-7 (Ho 8 colonne, come mostrato sopra.

Ora il mio problema è iSortCol_0 è fuorviante, dal momento che le colonne in cui nascoste, se non ho un mezzo per sapere quali colonne sono nascosti sul server mi fraintendere iSortCol_0 = 4 l'ordinamento per la colonna sbagliata.

Posso implementare una soluzione alternativa, inviando il informazioni su quali colonne sono visualizzate o nascoste esternamente ai datatables, ma ho la sensazione che sto facendo qualcosa di sbagliato o che mi sono perso per trovare la risposta al mio problema nella documentazione.

risposta

4

Non penso che ci sia un modo automatico per sapere che, quello che farei è inviare un parametro aggiuntivo al server usando fnServerParams() (come descritto nell'esempio this) per informare il server su quali colonne sono nascoste

"fnServerParams": function (aoData) { 
     aoData.push({ "name": "more_data", "value": "my_value" }); 
    } 
+0

Grazie/Grazie. Sembra una soluzione ragionevolmente standard! –