首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

Extjs4 grid依据model自动生成列

2012-08-28 
Extjs4 grid根据model自动生成列/** * model中设置visible属性使该列可生成,设置editor可以传递编辑器, *

Extjs4 grid根据model自动生成列

/** * model中设置visible属性使该列可生成,设置editor可以传递编辑器, * model中设置columnName可传递列名,默认为model的name为列名 * grid中设置autoGenerateColumns: true,可使自动生成列  * author:dys1990@qq.com */Ext.override(Ext.grid.Panel, {    initComponent: function() {        this.autoGenerateColumn();        this.callParent(arguments);    }});Ext.define('Ext.ux.AutoGenerateColumn', {    autoGenerateColumn: function() {        var me = this,            noModel = Ext.isDefined(me.model) === false,            noAutoGenerate = Ext.isDefined(me.autoGenerateColumns) === false;        if (noModel && noAutoGenerate) {            return;        }        if (me.autoGenerateColumns === true) {            if(Ext.isString(me.model)) {                me.model = Ext.ModelManager.getModel(me.model);            }            var modelFields = me.model.prototype.fields;            me.columns = new Array();            // Adding columns to grid            for (var i=0; i < modelFields.length; i++) {                var modelField = modelFields.items[i];                var isVisible = (Ext.isDefined(modelField.visible) && (modelField.visible === true));var columnName;                if (isVisible) {                columnName=modelField.name;                if(Ext.isDefined(modelField.columnName)){                columnName=modelField.columnName;                }                    var column = {                        text: columnName,                        dataIndex: modelField.name                    };                    if (modelField.type.type === 'floatOrString') {                        column.renderer = Ext.util.Format.numberOrString;                    }if(Ext.isDefined(modelField.editor)){column.editor=modelField.editor;}                    me.columns.push(column);                }            }        }        if (me.columns.length == 0) {            Ext.Error.raise('No fields declared in ' + me.model.$className + ' with property visible. Columns will not be created!');        }    }});Ext.grid.Panel.mixin('AutoGenerateColumn', Ext.ux.AutoGenerateColumn);

热点排行