2010-02-19 17 views
18

Mi chiedo come possiamo impostare una larghezza della colonna jqGrid su auto?JQGrid Larghezza automatica colonna

... 
colModel: [ 
{ name: 'MyDescription', index: 'description', align: 'left', width: 150, sortable: false }, 
... 

per la dichiarazione di cui sopra come posso specificare una larghezza di auto per la colonna in modo che si adatti alle dimensioni del tenore massimo in esso.

risposta

27

Non esiste alcun modo per specificare la colonna di aumento automatico in jqGrid. Ma puoi utilizzare l'opzione shrinkToFit di una griglia impostata su true e impostare alcuni valori di larghezza approssimativi (ad es. 20, 20, 20, 80) e la larghezza delle colonne verrà ridimensionata in base alla larghezza di una griglia.

shrinkToFit:

Questa opzione descrive il tipo di calcolo della larghezza iniziale di ogni colonna contro con la larghezza della griglia. Se il valore è true e l'opzione value in width è impostata, allora: Ogni larghezza di colonna viene ridimensionata in base alla larghezza dell'opzione definita. Esempio: se definiamo due colonne con una larghezza di 80 e 120 pixel, ma vogliamo che la griglia abbia un 300 pixel, le colonne verranno ricalcolate come segue: 1- column = 300 (nuova larghezza)/200 (somma di tutta la larghezza) * 80 (larghezza colonna) = 120 e 2 colonne = 300/200 * 120 = 180. La larghezza della griglia è 300 px. Se il valore è falso e l'opzione valore in larghezza è impostata, allora: La larghezza della griglia è la larghezza impostata nell'opzione. La larghezza della colonna non viene ricalcolata e i valori sono definiti in colModel.

+24

Questo è un importante aspetto negativo di jqGrid. –

0

Si può provare a utilizzare tableToGrid, per quanto mi ricordo conserva le larghezze. In tal caso, puoi anche esaminare il suo codice sorgente se il suo comportamento non soddisfa pienamente le tue esigenze.

8

È possibile utilizzare il metodo setGridWidth.

Esempio:

$(window).on('resize', function() { 
    $("#jqgrid").setGridWidth($(window).width()); 
}).trigger('resize'); 

DEMO

1

questo è in gran parte lavorando per me.

<div id="myjqgridwrapper" style="width:100%;"> 
    <table id="myjqgrid"></table> 
    <div id="myjqgridfooter"></div> 
</div> 

<script type="text/javascript"> 
    //script to autosize grid 
    //don't forget autowidth:true for initial size 
    $(window).bind('resize', function(){ 
     //set to 0 so grid does not continually grow 
     $('#myjqgrid').setGridWidth(0); 
     //resize to our container's width 
     $('#myjqgrid').setGridWidth($('#myjqgridwrapper').width()); 
    }).trigger('resize'); 
</script> 
1
Try this. Worked For Me 

.ui-common-table{ 
    width: 100% !important; 
} 

.ui-jqgrid .ui-jqgrid-hbox{ 
    padding-right: 0px !important; 
} 
+0

Questo non ha funzionato per me. – abd3721

Problemi correlati