zoukankan      html  css  js  c++  java
  • extjs动态列--editorGridPanel(2.2)

    根据Dynamic Grid重新整理了一个适合在extjs2.2版本下使用的动态editGridPanel。

    代码如下:

    Ext.grid.DynamicColumnModel = function(store){
    var cols = [];
    var recordType = store.reader.recordType;
    var fields = recordType.prototype.fields;
    if (fields.length == 0) {
    fields = store.reader.headers;
    for (var i = 0; i < store.reader.headers.length; i++) {
    var header = store.reader.headers[i]
    cols[i] = {
    header: header.text,
    dataIndex: header.name,
    tooltip: ”,
    hidden: header.hidden,
    renderer: eval(header.renderer)
    };
    }
    }
    else {
    for (var i = 0; i < fields.keys.length; i++) {
    var fieldName = fields.keys[i];
    //add checkbox column
    if (fieldName == “__chkbox”) {
    cols[i] = new Ext.grid.CheckboxSelectionModel();
    continue;
    }
    //add checkbox column
    if (fieldName == “__rownum”) {
    cols[i] = new Ext.grid.RowNumberer();
    continue;
    }

    var field = recordType.getField(fieldName);
    cols[i] = {
    header: field.header,
    dataIndex: field.name,
    tooltip: field.tooltip,
    hidden: field.hidden,
    sortable: true,
    renderer: eval(field.renderer),
    editor: new Ext.form.TextField()
    };
    }
    }
    store.fields = store.reader.recordType.prototype.fields;
    Ext.grid.DynamicColumnModel.superclass.constructor.call(this, cols);
    };
    Ext.extend(Ext.grid.DynamicColumnModel, Ext.grid.ColumnModel, {});

    Ext.data.DynamicXmlReader = function(meta){
    meta = meta ||{};
    Ext.data.XmlReader.superclass.constructor.call(this, meta,meta.fields);
    };
    Ext.extend(Ext.data.DynamicXmlReader, Ext.data.XmlReader, {
    getRecordType: function(data){
    recordDefinition = Ext.DomQuery.select(this.meta.recordDefinition + ‘ > *’, data);

    var arr = [];
    j = 0;
    for (var i = 0; i < recordDefinition.length; i++) {
    if (recordDefinition[i].nodeType == 1) {
    arr[j] = {
    name: recordDefinition[i].tagName,
    header: recordDefinition[i].getAttribute(‘header’),
    tooltip: recordDefinition[i].getAttribute(‘tooltip’),
    hidden: recordDefinition[i].getAttribute(‘hidden’) == “true” ? true : false,
    renderer: recordDefinition[i].getAttribute(‘renderer’)
    };
    j++;
    }
    }

    this.recordType = Ext.data.Record.create(arr);
    return this.recordType;
    },

    readRecords: function(doc){
    this.xmlData = doc;
    var root = doc.documentElement || doc;
    this.getRecordType(root);
    return Ext.data.DynamicXmlReader.superclass.readRecords.call(this, doc);
    }
    });

    Ext.grid.DynamicGrid = function(container){
    Ext.grid.DynamicGrid.superclass.constructor.call(this, container, []);
    };
    Ext.extend(Ext.grid.DynamicGrid, Ext.grid.EditorGridPanel, {
    onRender: function(ct, position){
    this.store.on(‘load’, this.doReconfiguration, this);
    this.colModel = new Ext.grid.ColumnModel([{
    header: '',
    dataIndex: '',
    sortable: true
    }]);
    Ext.grid.DynamicGrid.superclass.onRender.call(this, ct, position);
    },
    doReconfiguration: function(){
    this.colModel = new Ext.grid.DynamicColumnModel(this.store);
    this.view.bind(this.store, this.colModel);
    this.view.refresh(true);
    this.store.removeListener(“load”, this.doReconfiguration);
    }
    });

  • 相关阅读:
    android-自定义View
    java
    记录-常用的开发技巧
    便签:
    zTree 树形控件 ajax动态加载数据
    jquery ajax 传数据到后台乱码的处理方法
    spring + quartz 定时
    SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇基础类型和日期类型报400错误解决方法
    复制新项目 ,tomcat部署时名字还是旧项目名
    jsp 通用获取所有表单值传后台
  • 原文地址:https://www.cnblogs.com/hannover/p/1938830.html
Copyright © 2011-2022 走看看