jqGrid随窗口大小变化自适应大小的示例代码


在HTML和JavaScript中,要实现jqGrid随窗口大小变化而自适应大小,你通常需要在窗口大小变化时调用jqGrid的`setGridWidth`和`setGridHeight`方法(如果高度也需要自适应的话)。但更常见的是只设置宽度自适应,因为高度通常根据内容动态调整。

以下是一个简单的示例,展示了如何使jqGrid的宽度随浏览器窗口的宽度变化而自适应:


<!DOCTYPE html>
<html>
<head>
    <title>jqGrid 自适应大小示例</title>
    <!-- 引入jQuery库 -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <!-- 引入jqGrid库 -->
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/css/ui.jqgrid.css" />
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/js/jquery.jqGrid.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            // 初始化jqGrid
            $("#grid").jqGrid({
                url: 'your-data-source.json', // 替换为你的数据源
                datatype: 'json',
                colModel: [
                    { label: 'ID', name: 'id', width: 75 },
                    { label: 'Name', name: 'name', width: 150 },
                    // 添加更多列...
                ],
                rowNum: 10,
                rowList: [10, 20, 30],
                pager: '#pager',
                sortname: 'id',
                viewrecords: true,
                sortorder: 'asc',
                caption: 'My first grid'
            });

            // 监听窗口大小变化事件
            $(window).resize(function() {
                // 调用jqGrid的setGridWidth方法,使其宽度自适应
                $("#grid").jqGrid('setGridWidth', $("#grid").parent().width());
            });

            // 初始时设置一次宽度,确保页面加载时也是正确的
            $("#grid").jqGrid('setGridWidth', $("#grid").parent().width());
        });
    </script>
</head>
<body>
    <table id="grid"></table>
    <div id="pager"></div>
</body>
</html>

请注意,上面的代码示例中,`url: 'your-data-source.json'`需要替换为你的实际数据源URL。

这段代码首先初始化了jqGrid,并在窗口大小变化时调用`setGridWidth`方法来调整jqGrid的宽度。同时,在页面加载完成后(即`$(document).ready`中),也调用了一次`setGridWidth`以确保jqGrid的初始宽度是正确的。

注意:如果jqGrid被嵌套在某个容器内,并且该容器的宽度也可能变化,那么你可能需要将`$("#grid").parent().width()`替换为更具体的选择器,以获取正确的容器宽度。