2015-05-23 9 views
13

mam poniższej tabeli:Jak interaktywnie rozmiaru stałą kolumnę w FixedColumns DataTables męska 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> 

pomocą tego skryptu mogę przewinąć 2. kolumny naprzód i niech 1 kolumna (First name) przymocowany.

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

JSFiddle

Co chcę zrobić, to ręcznie interaktywnie rozmiar pierwszej kolumny w locie. Jak mogę to osiągnąć?

enter image description here

Odpowiedz

9

Nie ma natywna metoda FixedColumns API to zrobić. Zamiast ustawić szerokość poprzez header() tu wyznaczenia pierwszego kolumnę 200px:

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

table.draw() skutkuje podwójnych pasków przewijania (znika po zmianie rozmiaru chociaż). W jakiś sposób FixedColumns nie jest w pełni zawarty w draw() - nawet poprawka FixedColumns update() nie działa poprawnie. Ale wywołanie resize w oknie działa poprawnie.

rozwidlony skrzypce ->https://jsfiddle.net/k7err1vb/


Aktualizacja. Znaczenie pytania zmieniło się całkowicie (?)

Cóż, kiedyś była świetna wtyczka ColReorderWithResize.js, ale to działa słabo z DataTables 1.10.x. Więc możesz obniżyć poziom, jeśli zapotrzebowanie na zmienną stałą kolumnę jest niezbędne. Oprócz nowego interfejsu API i domyślnej stylizacji nie ma tak dużej różnicy między 1.9.x a 1.10.x - sam korzystasz z wersji 1.9.x właśnie z powodu potrzeby ColReorderWithResize.

Ktoś zrobił wtyczkę colResize ->https://github.com/Silvacom/colResize, która działa z wersją 1.10.2 i nowszą. Tu stosowane na skrzypcach OP:

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

demo ->https://jsfiddle.net/mhco0xzs/ a ona "działa" - jakoś - ale nie tak gładka jak za starych dobrych ColReorderWithResize.js. Ktoś może podjąć wyzwanie, aby zreorganizować ColReorderWithResize.js, ale ja na pewno nie mam na to czasu w tej chwili.

+0

Niestety. Ale chodzi mi o to, aby użytkownik ręcznie zmienił rozmiar pierwszej kolumny interaktywnie. Nie programista robi to pod maską. – neversaint

+1

ColReorderWithResize.js został odtworzony, patrz [jQuery DataTables: Zmiana kolejności kolumn i zmiana rozmiaru] (https://www.gyrocode.com/articles/jquery-datatables-column-reordering-and-resizing/) i [github.com /jeffreydwalter/ColReorderWithResize](https://github.com/jeffreydwalter/ColReorderWithResize). –

+0

@ Gyrocode.com Nice info; wygląda dobrze, po prostu sprawdził źródło, lubię, gdy ludzie starają się utrzymywać styl i konwencje mniej więcej podobne do kodu Alana Jardinesa. Wyprodukuj odpowiedź z tą nową wtyczką i masz gwarancję co najmniej jednej wersji. BTW, a co z przykładem colspan/rowspan? Może to być kanoniczna odpowiedź na dupe wbijanie wszystkich tych pytań. – davidkonrad

Powiązane problemy