要做多个统计表,表头/列名都是已知的,表的内容跟据查询结果得到。那么可以把表头信息放在XML中作为配置文件,在程序中读取。
TableColumn.xml:
<Data>
<columns name="table1">
<column>
<dataField>col1</dataField>
<headerText>项目分类</headerText>
<width>100</width>
</column>
<column>
<dataField>col2</dataField>
<headerText>项目个数</headerText>
<width>100</width>
</column>
</columns>
<columns name="table2">
<dataField>col1</dataField>
<headerText>项目分类</headerText>
<width>100</width>
</column>
<column>
<dataField>col2</dataField>
<headerText>项目个数</headerText>
<width>100</width>
</column>
<dataField>col3</dataField>
<headerText>比例(%)</headerText>
<width>100</width>
</column>
</columns>
</Data>
initTable显示DataGrid时调用下面的initTable方法,参数用来指定<columns name="table1">中的name属性内容,如initTable("table1");
mxml代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:XML id="TableColumn" source="TableColumn.xml"/>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.dataGridClasses.DataGridColumn;
[Bindable]
public var tableData:ArrayCollection= new ArrayCollection();//表数据
public function initTable(name:String)
{
this.initialize();
//设置表头
var xml:XML=this.TableColumn;
var lstColumns:XMLList=xml.columns.(@name==name).column;
setTableColumns(lstColumns);
switch(name)
{
case "table1":
tableData=new ArrayCollection([ //指定统计表的数据源
{col1:"type1",col2:"12"},
{col1:"tpye2",col2:"6"},
{col1:"type3",col2:"7"}
]);
break;
case "table2":
tableData=new ArrayCollection([ //指定统计表的数据源
{col1:"type1",col2:"3",col3:"25%"},
{col1:"tpye2",col2:"3",col3:"25%"},
{col1:"type3",col2:"3",col3:"25%"},
{col1:"type3",col2:"3",col3:"25%"}
]);
break;
default:
break;
}
//指定统计表的数据源
tableData=data;
}
/*
将XML转为Array,Array中的对象为DataGridColumn类型。
用这个Array设置DataGrid的columns属性。
*/
private function setTableColumns(lstcolumns:XMLList)
{
var columns:Array=new Array();
for each(var child:XML in lstcolumns)
{lstcolumns.toLocaleString()
var obj:Object=new Object();
var column:DataGridColumn=new DataGridColumn();
for each(var ite:XML in child.children())
{
obj[ite.name().toString()]=ite.toString();
}
column.dataField=obj.dataField;
column.headerText=obj.headerText;
column.width=obj.width;
columns.push(column);
}
myTable.columns=columns;
}
]]>
</mx:Script>
<mx:Panel id="chartContainer" title="统计表" width="100%" height="100%">
<mx:Label text="统计结果" left="20" top="10" fontSize="16" fontWeight="bold"/>
<mx:DataGrid id="myTable" dataProvider= "{tableData}" enabled="false" top="50" horizontalCenter="0" />
</mx:Panel>
</mx:Canvas>
分享到:
相关推荐
flex动态生成datagrid表头,外加linechart的简单操作,值得学习!
老外做的功能有点复杂,我整理了其中一个简单的效果,在表头上加一个按钮。扩展的话可以实现数据过滤,或者下拉动态隐藏指定列(灵感都来自extjs呵呵)。 也可以在此下载:...
NULL 博文链接:https://windmark.iteye.com/blog/1716422
因某些需要,DataGrid及其表头需要动态生成,网上的解决方案打多笼统,下面有个不错的解决方法,感兴趣的朋友可以参考下
其中包含一个三种状态的checkbox,DataGrid代码中引用了 带多选框的DataGrid(AdvancedDataGrid) 表头有全选CheckBox,三种状态:全选、部分选择、无选择 如果改变目录结构,需要在CustomCheckBox.mxml中更改inner....
AdvancedDataGrid导出复杂表头excel
这是我自己开发的一个dataGrid分页的控件,上传的资源是一个打成包的flex项目,这个控件在查询数据时是与后台进行实时交互的,表格的表头样式是重写皮肤类进行定义的,而隔行变色是通过css来实现的。其中最重要的...
这是我自己开发的一个dataGrid分页的控件,上传的资源是一个打成包的flex项目,这个控件在查询数据时是与后台进行实时交互的,表格的表头样式是重写皮肤类进行定义的,而隔行变色是通过css来实现的。其中最重要的...
datagrid设行背景色示例,提供了继承好的datagrid子类,
DataGrid具有以下功能:表头是动态生成的、每行都是有序号的、每行都是可以编辑、插入、删除、修改,接下来为大家分享下Flex如何动态生成可编辑的DataGrid
将复杂表头的AdvancedDataGrid导出EXCEL
3.4 节在容器中动态添加和移除子组件 3.5 节对容器使用基于约束的布局 3.6 节在容器内为子组件设置最大、最小尺寸 3.7 节为容器指定行和列的约束 3.8 节使用约束条件为文本创建排版流程(Layout Flows) 3.9 节在容器...
关于flex 4.6 sdk下复杂表头的开发包
flex的表格可以实现表头的column span,但是无法显示row span,这个资源是实现row span。
动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个时间转换的问题,顺便谈谈搜索技巧 .net中的正则表达式使用高级技巧 (一) C#静态成员和...