2012-04-20 3 views
14

Sto utilizzando un plug-in jQuery chiamato Datatables su una tabella contenuta in un modulo e questa tabella conterrà molti elementi del modulo.Inserimento di elementi del modulo non visibili nei DataTable

Ho un pulsante Salva modifiche nella pagina, che eseguirà una richiesta AJAX per aggiornare il database in base a ciò che l'utente ha inserito.

Il problema è che invierà solo gli elementi del modulo attualmente visibili nel Datatable. In un esempio che ho, ci sono 74 righe (tutte contenenti diversi campi). La quantità predefinita di record da mostrare è 10.

Quindi, quando il modulo viene inviato, vengono inviati solo gli elementi del modulo di 10 righe. Dovevo inviare i campi di tutte le righe, in questo caso tutte le 74 righe di campi.

Qualcuno ha una soluzione per questo? Grazie.

+0

stai usando una sorgente lato server per il tuo tavolo? – ManseUK

+0

Sto usando ASP classico per creare la tabella. –

+0

Quello che voglio dire è: stai ottenendo le righe nascoste dal server ogni volta o fai uscire l'intera tabella e quindi le pagificazioni di dati paginate per te? – ManseUK

risposta

6

Le tabelle dati distruggono le righe nascoste e le portano fuori dal DOM. Se è necessario eseguire un invio, è necessario utilizzare fnGetHiddenNodes() per recuperare le righe nascoste prima dell'invio. dare un'occhiata alle pagine api

$.fn.dataTableExt.oApi.fnGetHiddenNodes = function (oSettings) 
{ 
    /* Note the use of a DataTables 'private' function thought the 'oApi' object */ 
    var anNodes = this.oApi._fnGetTrNodes(oSettings); 
    var anDisplay = $('tbody tr', oSettings.nTable); 

    /* Remove nodes which are being displayed */ 
    for (var i=0 ; i<anDisplay.length ; i++) 
    { 
     var iIndex = jQuery.inArray(anDisplay[i], anNodes); 
     if (iIndex != -1) 
     { 
      anNodes.splice(iIndex, 1); 
     } 
    } 

    /* Fire back the array to the caller */ 
    return anNodes; 
} 
+0

Grazie mille. Cercavo questo codice nella documentazione, e non riuscivo a trovarlo. Domanda veloce qual è la differenza tra 'jQuery.inArray' e' $ .inArray'? –

+1

@GarethLewis sono esattamente la stessa cosa, '$' è un alias per 'jQuery' –

+0

OK, se capisco l'idea, cosa devo fare con gli anNodes per inviare il modulo? Devo in qualche modo collegare nuovamente ogni riga al tavolo? – eloyesp