SMART datagrid v.1 > Examples

Back  Forward

Column Grouping  Example

SMART datagrid格的列组可以聚集相关并以多种形式进行布置。 通过columns属性,可以在列组中指定一个以上的子列,并且列组将会水平或垂直布置子列。 这时,因为列组也可以被包含在子列中,所以就有可能实现复杂的布局。 

本次例题中,将会重新使用在Hello Grid例题中有提过的数据组和列。 下列代码中,nameCustomerGroupDateGroup的列就是列组, 而如果设置属性中存在columns,网格就会判断为列组设置信息并创建ColumnGroup对象。 另外,也可以通过将type值明确指定为"group"而创建列组。 

Code -1
    var columns = [
        {
            "name": "ProductName",
            "fieldName": "product_name",
            ...
        }, {
            "name": "CustomerGroup",
            "width": 200,
            "layout": "vertical",
            "columns": [
                {
                    "name": "Country",
                    "fieldName": "country",
                    ...
                    }, {
                        "name": "ChildGroup",
                        "layout": "horizontal",
                        "columns": [
                            {
                            	"name": "CustomerId",
                            	"fieldName": "customer_id",
                            	...
                            }, {
                            	"name": "CustomerName",
                            	"fieldName": "customer_name",
                            	...
                            }, {
                            	"name": "Phone",
                            	"fieldName": "phone",
                            	...
                            }
                        ]
                    }
                }
            ]
        }, {
            "name": "Currency",
            "fieldName": "currency",
            ...
        }, {
            "name": "DateGroup",
            "type": "group",
            "width": "200",
            "columns": [
                {
                	"name": "OrderDate",
                	"fieldName": "order_date",
                	...
                },  {
                	"name": "ShipDate",
                	"fieldName": "ship_date",
                	...
                }
            ]
        }
    ];
Grid - 1
rows

通过ColumnGroup.layout属性,可以变更列组的布置方向。 如果点击上面的"Change Layout"按钮,就可以水平或垂直的方式交替变更*DateGroup"的布置方向。 

Code -2
    var column = grdMain.columnByName('DateGroup');
    if (column) {
        column.setLayout(column.layout() == 'vertical' ? 'horizontal' : 'vertical');
    }

但是,有时也会有不应该显示子列的标头或注脚的情况。 这时,如果点击上面的"Child Headers"按钮, 就会通过使用ColumnGroup.childHeadersVisible属性,交替隐藏或显示"DateGroup"的子列标头。 而且,如果点击"Child Footers"按钮,就会通过ColumnGroup.childFootersVisible属性,交替隐藏或显示"CustomerGroup"的子列注脚。 

Code -3
    var column = grdMain.columnByName('DateGroup');
    if (column) {
        column.setChildHeadersVisible(!column.childHeadersVisible());
    }

如果使用GridBase.visitAllColumnsvisitColumns方法,可以实现相关列分组的所有列的所需操作。 

获取所有列 

获取显示中的列 

查看源代码 JSP 

See Also
GridBase.visitAllColumns
GridBase.visitColumns
GridView
GridDataSet.onRowInserted
Examples
Hello Grid
列尺寸调整
列移动