SMART datagrid v.1 > Examples

[ grids ver.1.3.5]   Back  Forward

Object Field  Example

可以在ValueType.OBJECT类型的数据字段中,直接储存JSON对象。 

连接在对象类字段的网格数据单元格中,基本上会显示指定在相关字段的keyPathkeyCallback属性返回的值, 并且如同其他数据类型,可以通过使用ValueColumn.displayCallback而创建显示值。 

下列"公司"列是连接在储存如下类型对象的字段上的。 

Code -1
    { name: 'Apple', addr: 'NewYork' }

另外,在相关字段的keyPath中,已指定了"name"。 

"销售量/增长率"列和"销售量"列连接在储存如下类型对象的字段上, 并且通过设置keyCallback或指定ValueColumn.displayCallback,将其显示在数据单元格中。 

Code -2
    { amount: '1234', growth: '1.3' }
Code -3
    ds.setFields([{
        "fieldName": "sales",
        "dataType": "object",
        "keyCallback": function (field, value) {
            return value.amount + ' / ' + value.growth;
        }
    },
    ...
Code -4
    grid.setColumns([{
        "fieldName": "sales",
        "displayCallback": function (index, value) {
            return value.amount;
        }
    },
    ...
Grid - 1
rows

另外,在这种数据单元格上,用户无法直接修改值,而只能通过另外的输入方式以及GridDataSet.setValue等而进行储存。 这时,储存在数据组的JSON对象的变更内容,只能在对象级别进行确认。 也就是说,即使是获取储存在数据组的对象(getValue)并变更属性后再进行储存(setValue),基本上也不会触发变更事件。 只在发生对象本身的变更时,才会触发变更事件。 

如果在下列代码中运行'SetValue',因为不会触发数据组事件,所以变更内容将不会立即反映到网格中, 而如果调用触发变更事件的'SetValueEx',就可以立即反映到网格中。 

   变更所选"公司"列单元格的值。 

对象类列的排序,将会以设置在字段的DataField.compareCallback中返回的比较值为标准而进行设置。 如果没有指定回调,就会以keyCallback返回的值或keyPath指定的对象的属性值而进行排序。 

Code -5
    {
        "fieldName": "sales",
        "dataType": "object",
        compareCallback: function (v1, v2) {
            return v1.growth - v2.growth;
        }
    }

当导出Excel时,对象类值如同显示内容,将会以keyPathkeyCallback返回的值为标准, 根据返回值的数据类型和指定在导出选项中的objectCallback等转换方式而进行储存。 

Code -6
    DataLudi.exportToExcel(grdMain, {
        fileName: "dlgrid.xlsx",
        objectCallback: function (row, column, v) {
            if (column.name() == 'Sales3') {
                return v.amount;
            }
            return v;
        }
    });   

 

查看源代码 

See Also
数据字段概述
DataField.keyPath
DataField.keyCallback
DataField.compareCallback
ValueColumn.displayCallback
GridDataSet.setValue
GridDataSet.setValueEx
GridExportOptions.objectCallback
Examples
数值
日期时间值
布尔值