2015-05-23 13 views
13

Ho la seguente tabella:Come ridimensionare in modo interattivo una colonna fissa in FixedColumns di DataTable Plugin

<table id="example" class="stripe row-border order-column" cellspacing="0" width="100%"> 
    <thead> 
     <tr> 
      <th>First name</th> 
      <th>Last name</th> 
      <th>Position</th> 
      <th>Office</th> 
      <th>Age</th> 
      <th>Start date</th> 
      <th>Salary</th> 
      <th>Extn.</th> 
      <th>E-mail</th> 
     </tr> 
    </thead> 

    <tbody> 
     <tr> 
      <td>Tiger</td> 
      <td>Nixon</td> 
      <td>System Architect</td> 
      <td>Edinburgh</td> 
      <td>61</td> 
      <td>2011/04/25</td> 
      <td>$320,800</td> 
      <td>5421</td> 
      <td>[email protected]</td> 
     </tr> 
    </tbody> 
</table> 

Utilizzando questo script posso scorrere il 2 ° colonne in avanti e lasciare che prima colonna (First name) fissa.

$(document).ready(function() { 
    var table = $('#example').DataTable({ 
     scrollY:  "300px", 
     scrollX:  true, 
     scrollCollapse: true, 
     paging:   false 
    }); 
    new $.fn.dataTable.FixedColumns(table); 
}); 

JSFiddle

Quello che voglio fare è quello di manualmente interattivo ridimensionare la prima colonna al volo. Come posso ottenerlo?

enter image description here

risposta

9

Non esiste un metodo nativo in FixedColumns API per fare questo. Invece, impostare la larghezza attraverso header(), qui l'impostazione della prima colonna a 200px:

table.tables().header().to$().find('th:eq(0)').css('min-width', '200px'); 
$(window).trigger('resize'); 

table.draw() risultati in doppie barre di scorrimento (scomparendo sul ridimensionamento però). In qualche modo FixedColumns non è completamente incluso in un draw() - nemmeno le colonne fisse update() lo fanno correttamente. Ma l'attivazione di resize sulla finestra ha il compito giusto.

violino biforcuta ->https://jsfiddle.net/k7err1vb/


Aggiornamento. Il significato della domanda è cambiato completamente (?)

Bene, c'era una volta un ottimo plugin ColReorderWithResize.js, ma questo funziona male con dataTables 1.10.x. Quindi potresti eseguire il downgrade se la richiesta di una colonna fissa ridimensionabile è essenziale. A parte la nuova API e lo stile di default non c'è molta differenza tra 1.9.xe 1.10.x - usa me stesso 1.9.x in un progetto proprio per la necessità di ColReorderWithResize.

Alcuni hanno creato un plug-in colResize ->https://github.com/Silvacom/colResize che funziona con 1.10.2 e versioni successive. Qui utilizzato al violino di OP:

var table = $('#example').DataTable({ 
    dom: 'Zlfrtip', 
    //target first column only 
    colResize: { 
     exclude: [2,3,4,5,6,7] 
    }, 
    ... 
}) 

demo ->https://jsfiddle.net/mhco0xzs/ e "funziona" - in qualche modo - ma non così liscia come i buoni vecchi ColReorderWithResize.js. Qualcuno potrebbe accettare la sfida al referee ColReorderWithResize.js, ma io stesso non ho certamente tempo per farlo al momento.

+0

spiacenti. Ma ciò che intendevo è consentire all'utente di ridimensionare manualmente la prima colonna in modo interattivo. Non il programmatore lo fa sotto il cofano. – neversaint

+1

ColReorderWithResize.js è stato ora refactored, si veda [jQuery DataTables: Riordino e ridimensionamento delle colonne] (https://www.gyrocode.com/articles/jquery-datatables-column-reordering-and-resizing/) e [github.com /jeffreydwalter/ColReorderWithResize](https://github.com/jeffreydwalter/ColReorderWithResize). –

+0

@ Gyrocode.com Nice info; sembra buono, ho appena ispezionato la fonte, mi piace quando le persone cercano di mantenere lo stile e le convenzioni più o meno simili al codice di Alan Jardines. Produci una risposta con quel nuovo plugin e sei garantito almeno un upvote :) BTW, che dire dell'esempio colspan/rowspan? Potrebbe essere la risposta canonica per il dupe martellante tutte quelle domande – davidkonrad

Problemi correlati