jQuery EasyUI 数据网格 - 创建子网格


jQuery EasyUI 数据网格 - 创建子网格

数据网格是 jQuery EasyUI 中非常常用的组件之一,允许我们快速创建一个可交互的表格,进行数据展示与编辑,本文将阐述如何创建子网格。

准备工作

为了创建子网格,我们需要使用嵌套数据来设计我们的数据源,如下所示:

var data = [{
    "id": 1,
    "name": "Node.js",
    "children": [
        { "id": 11, "name": "NPM" },
        { "id": 12, "name": "Express" },
        { "id": 13, "name": "Koa" }
    ]
},
{
    "id": 2,
    "name": "Python",
    "children": [
        { "id": 21, "name": "Django" },
        { "id": 22, "name": "Flask" },
        { "id": 23, "name": "Tornado" }
    ]
}];

在这里,我们给每个技术栈添加了一个 children 属性,这个属性用来表示该技术栈所拥有的子项目。

创建子网格

接下来我们需要使用 datagrid 组件来渲染这个数据网格,并创建子网格。

HTML 代码如下:

<div id="dg"></div>

JavaScript 代码如下:

$('#dg').datagrid({
    data: data,
    rownumbers: true,
    columns: [[
        { field: 'id', title: 'ID', width: 50 },
        { field: 'name', title: '技术栈', width: 100 }
    ]],
    view: detailview,
    detailFormatter: function(index, row){
        return '<div style="padding:2px"><table class="ddv"></table></div>';
    },
    onExpandRow: function(index, row){
        var ddv = $(this).datagrid('getRowDetail',index).find('table.ddv');
        ddv.datagrid({
            data:row.children,
            width:'100%',
            height:'auto',
            columns:[[
                {field:'id',title:'ID',width:50},
                {field:'name',title:'子项目',width:100}
            ]],
            onResize:function(){
                $('#dg').datagrid('fixDetailRowHeight',index);
            },
            onLoadSuccess:function(data){
                setTimeout(function(){
                    $('#dg').datagrid('fixDetailRowHeight',index);
                },0);
            }
        });
        $('#dg').datagrid('fixDetailRowHeight',index);
    }
});

在这里,我们使用了一个叫做 detailview 的插件来创建子网格。具体来说,我们需要在数据网格实例中使用 view 属性指定 detailview 插件,这样就可以在数据网格中创建子网格了。

detailFormatter 函数中,我们返回了一个字符串,这个字符串表示子网格的 HTML 结构。在 onExpandRow 函数中,我们使用 datagrid 组件来渲染子网格,并将其添加为当前行的子元素。这是 jQuery EasyUI 创建子网格的关键步骤。

最后,我们在 onResizeonLoadSuccess 函数中使用 datagrid 组件提供的函数修正子网格的高度,以保证子网格的显示效果。

总结

通过上述代码,我们成功创建了一个子网格。需要注意的是,子网格应该与父网格共享数据源,这样才能确保子网格中显示的数据是正确的。

如果您希望对子网格的样式和功能进行更加定制化的修改,您可以在子网格的 HTML 结构中添加更多的组件和属性,并在 datagrid 初始化函数中使用更多的参数来实现更高级的功能。

希望本文的内容对您有所帮助,如有疑问欢迎在评论区留言。