jQuery EasyUI 数据网格 - 创建属性网格


jQuery EasyUI 数据网格 - 创建属性网格

简介

jQuery EasyUI 是一个强大的、易于使用的UI库,它基于jQuery框架,并提供了诸如datagrid、tree、tabs、dialog等等常用的控件。数据网格是jQuery EasyUI中最常用的控件之一,它可以用于显示和编辑表格数据。

属性网格是一个特殊的数据网格,它可以像Excel一样编辑表格数据。它将每一行作为一个对象,每一列作为对象的属性,你可以在每个单元格编辑数据,添加新的行或删除现有的行。在编写本文档的时候,jQuery EasyUI最新版本是1.9.25。

创建属性网格

创建属性网格需要使用datagrid控件,通过设置data-options参数指定额外的属性即可。

HTML结构

在HTML中,我们需要准备一个最基本的datagrid结构,如下所示:

<table id="dg"></table>

然后,我们需要在JavaScript中使用datagrid方法将其转换为一个属性网格。为了实现这一点,我们需要使用数据源和列定义来初始化datagrid。数据源是我们要在datagrid中显示的数据,列定义是datagrid中的列头和列属性的定义。

数据源

数据源可以是一个包含对象的数组或一个指向服务器端的URL地址。如果我们使用一个数组,可以将其直接传递给datagrid的data选项。如下所示:

var data = [
    { id: 1, name: 'John', age: 22 },
    { id: 2, name: 'Mike', age: 27 },
    { id: 3, name: 'Jane', age: 20 }
];
$('#dg').datagrid({
    data: data
});

如果我们使用一个URL地址,则需要设置url选项。datagrid将从服务器获取数据。如下所示:

$('#dg').datagrid({
    url: '/data.json'
});

列定义

列定义可以使用一个对象数组来定义。每个对象包含以下属性:field、title、width和editor。其中field属性表示列的属性名称,title属性表示列头的文本,width属性表示列的宽度,editor属性表示列的编辑控件。如下所示:

var columns = [
    { field: 'id', title: 'ID', width: 50 },
    { field: 'name', title: 'Name', width: 100, editor: 'text' },
    { field: 'age', title: 'Age', width: 50, editor: 'numberbox' }
];
$('#dg').datagrid({
    columns: columns
});

目前EasyUI支持多种编辑控件,包括textbox、numberbox、combobox、datebox、validatebox、searchbox等。你可以在官方文档中找到有关编辑控件的更详细信息。

其他设置

接下来,我们需要添加一些其他的设置,如fit、toolbar和rownumbers等。如下所示:

$('#dg').datagrid({
    fit: true,
    toolbar: '#toolbar',
    rownumbers: true,
    singleSelect: true,
    selectOnCheck: true,
    checkOnSelect: true
});

以上设置中,fit选项将属性网格自适应父容器尺寸,toolbar选项将属性网格和一个工具栏面板关联起来,rownumbers选项将自动为每行添加行号。

完整代码

现在让我们把以上代码组合起来,完整代码如下所示:

<div id="toolbar">
    <a href="#" class="easyui-linkbutton" iconCls="icon-add" onclick="addRow()">Add</a>
    <a href="#" class="easyui-linkbutton" iconCls="icon-remove" onclick="removeRow()">Remove</a>
</div>
<table id="dg"></table>
<script>
    function addRow() {
        $('#dg').datagrid('appendRow', { id: 0, name: '', age: 0 });
    }
    function removeRow() {
        var row = $('#dg').datagrid('getSelected');
        if (row) {
            var index = $('#dg').datagrid('getRowIndex', row);
            $('#dg').datagrid('deleteRow', index);
        }
    }
    var columns = [
        { field: 'id', title: 'ID', width: 50 },
        { field: 'name', title: 'Name', width: 100, editor: 'text' },
        { field: 'age', title: 'Age', width: 50, editor: 'numberbox' }
    ];
    var data = [
        { id: 1, name: 'John', age: 22 },
        { id: 2, name: 'Mike', age: 27 },
        { id: 3, name: 'Jane', age: 20 }
    ];
    $('#dg').datagrid({
        data: data,
        columns: columns,
        fit: true,
        toolbar: '#toolbar',
        rownumbers: true,
        singleSelect: true,
        selectOnCheck: true,
        checkOnSelect: true
    });
</script>

总结

属性网格是一个强大的数据表格控件,它将列视为对象的属性,将行视为对象的实例。在本文档中,我们通过使用jQuery EasyUI中的datagrid控件,创建了一个简单的属性网格。我们使用了一个数组作为数据源,并定义了列头和编辑控件。除此之外,我们还添加了工具栏、行号和自适应父容器等其他设置。这使得我们的属性网格更容易与用户交互,提高了用户体验。