使 JqGrid 宽度流动

2022-01-19 00:00:00 jquery css jqgrid

更正的代码:

<script>
    var $grid = $("#list2");
    emptyMsgDiv = $("<div><span style='color:red; text-align:center;font-size:18px;display:block;'>No Workorder Found</span></div>");
    jQuery("#list2").jqGrid({
        url:'server.php',
        datatype: "json",
        mtype: 'POST',
        colNames:['WO#','Status','Customer Name','Salesman', 'Created Date', 'WO Total', 'Notes', 'Edit'],  
        colModel:[ 
               {name:'id',index:'id', align:"center"}, 
               {name:'status1',index:'status1', align:"center", width:100}, 
               {name:'status2',index:'status2', align:"center", width:50}, 
               {name:'status3',index:'status3', align:"center"}, 
               {name:'result',index:'result', align:"center", sortable:false}          
        ],
        rowNum:10,
        rowList:[10,20,30],
        pager: '#pager2',
        sortname: 'Invoice.id',
        viewrecords: true,
        height:'100%',
        autowidth:true,
        sortorder: "desc",
        height: '100%',
        loadComplete: function() {
             var ts = this;
             if (ts.p.reccount === 0) {
                 $(this).hide();
                 emptyMsgDiv.show();
             } else {
                 $(this).show();
                 emptyMsgDiv.hide();
             }
        }
    });
    emptyMsgDiv.insertAfter($grid.parent());
    </script>

这是我的 JqGrid 代码:

Here is the code I have for my JqGrid :

<script>
var $grid = $("#list2");
emptyMsgDiv = $("<div><span style='color:red; text-align:center;font-size:18px;display:block;'>No Workorder Found</span></div>");
jQuery("#list2").jqGrid({
    url:'server.php',
    datatype: "json",
    mtype: 'POST',
    colNames:['WO#','Status','Customer Name','Salesman', 'Created Date', 'WO Total', 'Notes', 'Edit'],  
    colModel:[ 
           {name:'id',index:'id', align:"center"}, 
           {name:'status1',index:'status1', align:"center"}, 
           {name:'status2',index:'status2', align:"center"}, 
           {name:'status3',index:'status3', align:"center"}, 
           {name:'result',index:'result', align:"center", sortable:false}          
    ],
    rowNum:10,
    rowList:[10,20,30],
    pager: '#pager2',
    sortname: 'Invoice.id',
    viewrecords: true,
    height:'100%',
    sortorder: "desc",
    height: '100%',
    loadComplete: function() {
         var ts = this;
         if (ts.p.reccount === 0) {
             $(this).hide();
             emptyMsgDiv.show();
         } else {
             $(this).show();
             emptyMsgDiv.hide();
         }
    }
});
emptyMsgDiv.insertAfter($grid.parent());
</script>

我正在尝试使页面的 colModel 流动宽度,我可以手动更改每个列的宽度,如下面的花絮:

I am trying to make the colModel fluid width for the page, I am able to change the width manually for each of the columns as in the following tidbit :

{name:'status1',index:'status1', align:"center", width:50}

但是,我无法定义百分比,或者似乎弄清楚如何进行流体宽度.有人有什么想法吗?

However, I can not define percentages, or seem to figure out how to do fluid width. Does anyone have any ideas?

推荐答案

首先你应该添加 autowidth: true 选项,将网格的初始宽度设置为外部容器的宽度HTML 页面.它将强制调整与 colModelwidth 属性值成比例的所有列的大小.因为您没有指定任何 width 属性,所以将使用默认的 150 值.在调整大小的情况下,这意味着您为所有列指定了 相同的 宽度.如果您需要为某些列保留一些固定宽度,例如对于具有 formatter: "actions" 的列(在网格中显示两个编辑图标),那么您可以添加 fixed: true 到列.

First of all you should add autowidth: true option, which sets the initial width of the grid to the width of outer container on the HTML page. It will force resizing of all columns proportional of the value of width property in colModel. Because you don't specify any width property then the default 150 value will be used. In case of resizing it means just that you specified the same width for all columns. If you need to hold some fixed width for some columns, for example for the column which have formatter: "actions" (which displays two editing icons in the grid), then you can add fixed: true to the column.

要在网络浏览器窗口或外部 div 调整大小后每次调整网格大小,您可以使用以下代码

To resize the grid every time after the web browser window or the outer div will be resized you can use the following code

$(window).bind("resize", function () {
    var newWidth = $grid.closest(".ui-jqgrid").parent().width();
    $grid.jqGrid("setGridWidth", newWidth, true);
}).trigger("resize");

(请参阅旧答案).

附加功能存在于 free jqGrid,我从重命名开始开发的 jqGrid 的分支jqGrid 到 Guriddo jqGrid JS(参见 帖子) 并将其商业化.演示:http://jsfiddle.net/OlegKi/andm1299/19/ 使用 <div class="container"> 作为 jqGrid 的外层 div 并添加 classes: "hidden-xs", labelClasses: "hidden-xs" 引导类(请参阅 文档)到不太重要的列 ComboDuration演示.结果,该列将在调整网格大小时自动隐藏/可见.在像素分辨率较低的移动设备上产生良好的效果可能非常有帮助.

Additional features exist in free jqGrid, the fork of jqGrid which I develop starting with renaming jqGrid to Guriddo jqGrid JS (see the post) and making it commercial. The demo: http://jsfiddle.net/OlegKi/andm1299/19/ uses <div class="container"> as the outer div of jqGrid and to add classes: "hidden-xs", labelClasses: "hidden-xs" bootstrap classes (see the documentation) to less important column ComboDuration of the demo. As the result, the column will be made automatically hidden/visible on resizing of the grid. It could be very helpful to produce good results on mobile devices with low pixel resolution.

相关文章