读书人

Ext 动态表头跟行合并

发布时间: 2012-12-26 14:39:28 作者: rapoo

Ext 动态表头和行合并
1.产生动态的表头

function initHeader(data){var colWidth = 50;  var headers = data.header;var fields = data.fields;if(headers == null || headers.length == null || headers.length == 0){alert("请先给XXX!");return;}/* * 构建field和data */var dataMaps =[];dataMaps.push({name:'group_name',details:[]});for(var k=0;k<fields.length;k++){dataMaps.push(fields[k]);}dataMaps.push({name:'total_count',details:[]});var gridStore = new Ext.data.JsonStore({data: {root:data.datas},autoDestroy: true,root:'root',fields:dataMaps});/** * 构建复杂表头 */var columns = [{header: 'XX', locked:true, width: 90, dataIndex: 'group_name'},   {header: '合计', locked:true, width: 40, dataIndex: 'total_count'}];var columnsRow = [{header: 'XX',align:'center',rowspan:2,colspan:1,locked:true,height:46},  {header: '合计',align:'center',rowspan:2,colspan:1,locked:true,height:46}];for(var i=0; i<headers.length; i++){var dataInfo = headers[i];var dates = dataInfo.header_2;//第一行var hrcell = {};hrcell.header = dataInfo.header_1;//列名hrcell.colspan = dates.length;hrcell.align = 'center';hrcell.width = dates.length*colWidth;columnsRow.push(hrcell);for(var j=0; j<dates.length; j++){var dobj = dates[j];//第二行var drcell = {};drcell.header = dobj.count_name;drcell.width = colWidth;drcell.align = 'center';drcell.dataIndex = dobj.column_index;columns.push(drcell);}}var grid = new Ext.grid.GridPanel({allowEdit:false,columnLines: true,autoScroll:true,stripeRows: true,autoSizeColumns : false,view:  new Ext.ux.grid.LockingGridView(),store:gridStore,enableColLock:false,enableColumnResize:false,enableColumnMove: false,enableColumnHide:false,colModel: new Ext.ux.grid.LockingColumnModel(/*columns*/{columns:columns,defaultSortable: true,bLockedTable:true,rows: [columnsRow]}),    viewConfig: {        forceFit: false    },    sm: new Ext.grid.RowSelectionModel({singleSelect:true}),    title: '',    plugins: [new Ext.ux.plugins.GroupHeaderGrid()]});return grid;}

读书人网 >软件开发

热点推荐