2013-10-11 15 views
5

colResizable sembra un ottimo plugin per larghezze di colonne regolabili.Larghezza colonne con plugin ridisponibile

Sfortunatamente, rimuove le larghezze impostate in origine. Stavo usando whitespace: nowrap dato che ho alcune colonne minuscole e alcune più grandi. Ora con il plugin colResizable tutte le colonne sono regolate alla stessa dimensione.

Ho provato a risolvere i problemi leggendo le larghezze prima che il plug-in sfrutti e reimpostandole successivamente. All'inizio sembra buono, ma poi succedono cose strane con le manche. Le maniglie rimangono ovviamente dove sono state con le stesse colonne di dimensioni.

var columnWidths = new Array(); 
// store original col widths in array 
$.each($("th", table), function() { 
    columnWidths.push($(this).width()); 
}); 

// Make cols resizable 
$(function() { 
    table.colResizable({ 
     liveDrag: true, 
     gripInnerHtml: "<div class='grip'></div>", 
     draggingClass: "dragging" 
    }); 
}); 

// reset columns to original width 
for (var i = 0; i < columnWidths.length; i++) { 
    $('th:nth-child(' + (i + 1) + ')', table).css({ width: columnWidths[i] + "px" }); 
} 

Qualcuno può pensare a una soluzione migliore?

risposta

6

Dopo aver studiato la fonte da github, ho trovato un modo migliore.

layout della tabella viene modificata prima quando la tabella viene assegnata la classe della firma che include Poco prima di questo, mi sto spingendo la larghezza delle colonne originali in un nuovo array. Questo array è passato alla funzione createGrips.

/* init function */ 
// ... 

var originalColumnWidths = new Array(); 
$.each($('th', t), function() { 
    originalColumnWidths.push($(this).width()); 
}); 

// t.addClass(SIGNATURE) ... 

createGrips(t, originalColumnWidths); 

Quando scorrendo le colonne nella funzione createGrips, sto assegnando il valore dalla matrice alla nuova jQuery avvolto colonna oggetto invece della larghezza della colonna corrente.

// Change the signature 
var createGrips = function (t, originalColumnWidths) { 
// ... 

// Replace that line 
c.w = c.width(); 
// with the following 
c.w = originalColumnWidths[i]; 

Che funziona perfettamente per me. Spero che possa aiutare qualcuno!

+0

Ci ha provato. Non ha avuto alcun successo, penso che il plugin principale sia stato aggiornato da allora comunque. – foochow

+1

Inoltre, ho notato che avevo problemi con Chrome (i grip non si allineavano). L'impostazione della larghezza della tabella su 0 (e il dimensionamento delle singole colonne è stato appena utilizzato) ha risolto il problema. – prograhammer

+0

Funziona ancora nell'ultima versione senza effetti collaterali negativi che posso trovare – DelightedD0D

Problemi correlati