flex通过AdvancedDataGrid组件合并单元格,通过java端动态绑定AdvancedDataGrid的源数据,并导出AdvancedDataGrid源数据为excel表格
(注意:该文件适用于表头最多由4行组成的,若低于4行,AdvancedDataGrid组件下应全部使用AdvancedDataGridColumnGroup)
(特别注意:若为表头为4行组成并有合并单元格,应注意AdvancedDataGridColumnGroup和AdvancedDataGridColumn的使用)
1.创建一个.mxml文件
<?xml version="1.0" encoding="utf-8"?>
<viewer:BaseWidget xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:viewer="com.commpent.widget.*"
xmlns:quick="com.commpent.quick.*"
xmlns:esri="http://www.esri.com/2008/ags"
xmlns:cym="com.commpent.toc.utils.*"
layout="absolute" creationComplete="init(event)">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import com.adobe.utils.StringUtil;
import com.as3xls.xls.ExcelFile;
import com.as3xls.xls.Sheet;
import com.commpent.toc.utils.ExportToExcelTool;
import com.kingtop.tasks.QueryDataBaseTask;
import com.sys.GobalConfig;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.core.FlexGlobals;
import mx.events.FlexEvent;
import spark.events.IndexChangeEvent;
protected function init(event:FlexEvent):void
{
//初始化县(市区)的下拉列表
var url:String = GobalConfig.gobalXML.gobalWebgisUrl+"/cardEditAction.do?method=queryForListByPidOther";
var querydatabasetask:QueryDataBaseTask = new QueryDataBaseTask(url);
var xsq:String = FlexGlobals.topLevelApplication.userXZQH;
querydatabasetask.webParameters = ["code","pid"];
querydatabasetask.webValues = ["XMSJQ","0"];
querydatabasetask.queryComplete = OnSearchTypeComplete;
querydatabasetask.query();
function OnSearchTypeComplete(event:Event):void
{
var loder:URLLoader = event.target as URLLoader;
try{
var jsonObject:Object = JSON.parse(loder.data);
if(jsonObject.length == 0){
return;
}
var array:Array = jsonObject.nodes as Array;
var arrayxsq:Array = new Array();
if(xsq == GobalConfig.gobalXML.deptCodeXM || xsq == GobalConfig.gobalXML.deptCodeXMZ){
arrayxsq = array;
}else{
for(var i:int = 0; i<array.length;i++){
if(array[i]['value'] == xsq){
arrayxsq.push(array[i]);
break;
}
}
}
XSQ.dataProvider = new ArrayCollection(arrayxsq);
}catch(error:Error){
Alert(error.toString());
}
}
}
//随着下拉列表的选择的改变,初始化乡(镇场)或村(工区)的下拉列表
protected function province_changeHandler(event:IndexChangeEvent):void
{
var url:String = GobalConfig.gobalXML.gobalWebgisUrl+"/cardEditAction.do?method=queryForListByPidOther";
var querydatabasetask:QueryDataBaseTask = new QueryDataBaseTask(url);
querydatabasetask.webParameters = ["code","pid"];
var sin:int = event.target.selectedIndex;
try{
querydatabasetask.webValues = ["XMSJQ",event.target.selectedItem.id];
}catch(error:Error){
Alert.show("请从下拉列表中选取!","温馨提示:");
event.target.selectedIndex = -1;
event.target.textInput.setFocus();
return;
}
querydatabasetask.queryComplete = OnSearchTypeComplete;
querydatabasetask.query();
var id:String = event.target.id;
function OnSearchTypeComplete(event:Event):void
{
var loder:URLLoader = event.target as URLLoader;
try{
var jsonObject:Object = JSON.parse(loder.data);
if(jsonObject.length == 0){
return;
}
var array:Array = jsonObject.nodes as Array;
if(id == 'XSQ')
{
//由于县(市区)下拉列表的选择的改变,所以需将乡(镇场)和村(工区)的下拉列表重置
XZC.selectedIndex = -1;
CGQ.selectedIndex = -1;
XZC.dataProvider = new ArrayCollection(array);
CGQ.dataProvider = new ArrayCollection();
}
else if(id == 'XZC')
{
//由于乡(镇场)下拉列表的选择的改变,所以需将村(工区)的下拉列表重置
CGQ.se