动态构造flex多表头
动态构造 flex 多表头
在开发 flex 报表的过程中感觉针对每一张报表重新写一个 mxml 是非常不值得的。如果编译好的 swf 可以适应不同的报表不就很爽了。
如下面是一个多表头的例子:
现在想用下面这种格式的数据生成上面的表头。
上面这段 xml 用“ group ”来表示列合并的部分,“ column ”表示了数据列,如果把表头看作树的话“ column ”就是叶子。叶子在表头上对应的就是数据列,多出了相应属性。
怎么对上面的 xml 进行解析呢:
上面定义了一个 AdvancedDataGrid 实例,这里的 groupedColumns 里面只有一个 AdvancedDataGridColumnGroup 并设置其 Id 为 dataColumns 。
上面的 httpService 是用来访问后台生成的 xml 文件。处理它的程序是 onXmlToSet 方法,见下面:
这里得到了 setXml ,其中 dataColumns = createHeaders(dataColumns,setXml.elements()); 这一句就是动态生成表头。
见下面这个方法:
这个方法有两个参数,一个是 parent ,表示上一级的列合并,一个是用一个 for 循环,当遇到 column 时直接加到 parent 上,否则 group 将作为下一个 parent 再次执这个方法,并加到 parent 。就是一个简单的树遍历。
最后的 parent 就是一个完整的表头。