2010-02-19 74 views
18

我只是想知道如何設置一個jqGrid列寬度爲自動?JQGrid列自動寬度

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

對上述說法我怎麼可以指定自動寬度列,使其適合於它的最大含量的大小。

回答

27

在jqGrid中沒有辦法指定autowidth列。但是,您可以將網格的shrinkToFit選項設置爲true,並設置一些近似的寬度值(例如20,20,20,80),並將列的寬度縮放爲網格的寬度。

shrinkToFit:

此選項描述針對與所述格柵的寬度每列的初始寬度的計算的類型。如果該值爲true並且設置了寬度值選項,則:每個列寬都根據定義的選項寬度進行縮放。例如:如果我們定義寬度爲80和120像素的兩列,但希望網格具有300像素 - 則重新計算列如下:1-列= 300(新寬度)/ 200(所有寬度之和)* 80(列寬)= 120和2列= 300/200 * 120 = 180。網格寬度爲300px。如果該值爲false並且寬度值選項被設置,那麼:網格的寬度是在選項中設置的寬度。列寬不會重新計算,並具有在colModel中定義的值。

+24

這是一個重大的缺點jqGrid的。 – 2012-08-09 14:47:27

0

您可以嘗試使用tableToGrid,據我所知,它可以保留寬度。如果是這樣,你也可以查看它的源代碼,如果它的行爲不完全適合你的需要。

8

您可以使用方法setGridWidth

例子:

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

DEMO

1

這主要是爲我工作。

<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

這不適合我。 – abd3721 2017-07-08 20:49:51