2010-02-19 80 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