ExtJs에서 백그라운드 데이터에 따라 테이블 열 및 데이터 동적 생성

2227 단어 ExtJs
    renderDynamicTable: function(dataset,type, tab) {
        var resultSetId = type === 'control' ? '#controlResultSet' : '#testResultSet';
        var ctlSet = dataset;
        if(Ext.isArray(ctlSet) && ctlSet.length > 0){
            var ctlData = [];
            var fields = [];
			// store fields 
            ctlSet.forEach(function(row,index){
                var rowData = {};
                if(row && row.length > 0){
                    if(fields.length === 0){
                        for(var i=0;i<row.length;i++){
                            fields.push('col' + i);
                        }
                    }
                    row.forEach(function(value,index){
                        rowData[fields[index]] = value;
                    });
                    ctlData.push(rowData);
                }
            });
            var columns = [];
			// 
            fields.forEach(function(name,index){
                columns.push({
                    text: name,
                    dataIndex: name,
                    renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
                        if(!Ext.isEmpty(value)){
                            metaData.tdAttr = 'data-qtip="' + value + '"';
                        }
                        return value;
                    }});
            });
			// store, fields
            Ext.create('Ext.data.Store', {
                storeId:'ctlStore',
                fields:fields,
                data: ctlData,
                proxy: {
                    type: 'memory',
                    reader: {
                        type: 'json'
                    }
                }
            });
			// store 
            tab.down(resultSetId).reconfigure(Ext.data.StoreManager.lookup('ctlStore'),columns);
        }
    }

좋은 웹페이지 즐겨찾기