日期:2014-05-16  浏览次数:20352 次

Extjs复习笔记(十七)-- 给grid里面的内容分组

给grid里面的内容分组。



?Ext.onReady(function(){

    Ext.QuickTips.init(); //开启浮动汽泡提示功能

    var xg = Ext.grid; //简化


    // shared reader
    var reader = new Ext.data.ArrayReader({}, [
       {name: 'company'},
       {name: 'price', type: 'float'},
       {name: 'change', type: 'float'},
       {name: 'pctChange', type: 'float'},
       {name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'},
       {name: 'industry'},
       {name: 'desc'}
    ]);

    var store = new Ext.data.GroupingStore({ //记住下面的定义格式
            reader: reader,
            data: xg.dummyData, //下面定义的数据
            sortInfo:{field: 'company', direction: "ASC"},
            groupField:'industry' //看一下最下面给的Array数据就可以知道,这边的industry就是最后一列,用来划分类别(组)
        });

    var grid = new xg.GridPanel({
        store: store,
        columns: [
            {id:'company',header: "Company", width: 60, sortable: true, dataIndex: 'company'},
            {header: "Price", width: 20, sortable: true, renderer: Ext.util.Format.usMoney, dataIndex: 'price'},
            {header: "Change", width: 20, sortable: true, dataIndex: 'change', renderer: Ext.util.Format.usMoney},
            {header: "Industry", width: 20, sortable: true, dataIndex: 'industry'},
            {header: "Last Updated", width: 20, sortable: true, renderer: Ext.util.Format.dateRenderer('m/d/Y'), dataIndex: 'lastChange'}
        ],

        view: new Ext.grid.GroupingView({ //与GroupingStore对应
            forceFit:true,
/*forceFi:Defaults to false. Specify true to have the column widths re-proportioned at all times. The initially configured width of each column will be adjusted to fit the grid width and prevent horizontal scrolling. If columns are later resized (manually or programmatically), the other columns in the grid will be resized to fit the grid width. */

            groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})'
        }),
/*groupTextTpl:The template used to render the group header (defaults to '{text}'). This is used to format an object which contains the following properties:
group : String
The rendered value of the group field. By default this is the unchanged value of the group field. If a groupRenderer is specified, it is the result of a call to that function.
gvalue : Object
The raw value of the group field.
text : String
The configured header (as described in showGroupName) if showGroupName is true) plus the rendered group field value.
groupId : String
A unique, generated ID which is applied to the View Element which contains the group.
startRow : Number
The row index of the Record which caused group change.
rs : Array
Contains a single element: The Record providing the data for the row which caused group change.
cls : String
The generated class name string to apply to the group header Element.
style : String
The inline style rules to apply to the group header Element.
See Ext.XTemplate for information on how to format data using a template. Possible usage:
var grid = new Ext.grid.GridPanel({
    ...
    view: new Ext.grid.GroupingView({
        groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})'
    }),
});*/

        frame:true,
        width: 700,
        height: 450,
        collapsible: true, //最右上角那个三角号,点击 可收缩
        animCollapse: false,  //收缩时没有慢慢缩进去的效果,一般这个属性是不设置成false的,这里面只是展示一下有这个设置
        title: 'Grouping Example',
        iconCls: 'icon-grid',
        fbar  : ['->', {
            text:'Clear Grouping',
            iconCls: 'icon-clear-group',
            handler : function(){
                store.clearGrouping(); //GroupingStore自带的一个函数,可以清除分组状态
            }
        }],
        renderTo: document.body //相当于Ext.get("body");
    });
});



// Array data for the grids
Ext.grid.dummyData = [
    ['3m Co',71.72,0.02,0.03,'4/2 1