您的位置:首页 > 其它

Flex中根据CSV文件来动态创建DataGrid(包括列标题)

2012-03-26 10:08 501 查看
Flex中,读入CSV文件(包括列标题),然后根据CSV文件的内容来设置Datagrid,方法如下:

1、声明变量

/** CSV文件读入用的对象 */

private var myFileReference:FileReference = new FileReference();

[Bindable]

private var arrDgData : ArrayCollection = new ArrayCollection(); // DataGrid的DataProvider

// DataGrid控件

<mx:DataGrid id="dgData" dataProvider="{dgDataCollection}" height="100%" width="100%" verticalGridLines="true"

dropEnabled="false" sortableColumns="false" allowMultipleSelection="true" horizontalGridLines="true"

dragMoveEnabled="false" draggableColumns="false">

2、用myFileReference打开要读入的CSV文件,经过Server端Java程序(Remote)处理后,返回一个List。

3、接下来用如下的方法对返回的List进行操作,即可生成一个带列标题的DataGrid

private var csvInfoList : ArrayCollection;

private function afterLocalOutput(event : ResultEvent):void {

circlePackEntRemote.removeWaiting();

csvInfoList = ArrayCollection(event.result);

if (csvInfoList == null || csvInfoList.length == 0) {

return;

}

arrDgData.removeAll();

var arrRecord : Array;

var allColumns : Array = new Array();

arrRecord = csvInfoList.getItemAt(0) as Array;

var i : int;

// 生成各个列

for (i = 0; i < arrRecord.length; i++) {

var colEx:DataGridColumnEx = new DataGridColumnEx();

colEx.headerText = arrRecord[i];

colEx.sortable = false;

colEx.width = 70;

// 设置各个列的dataField

colEx.dataField = "msItem" + i;

colEx.setStyle("textAlign","left");

allColumns.push(colEx);

}

dgData.columns = allColumns;

// 循环,DataGrid的DataProvider做成

for (i = 1; i < csvInfoList.length; i++) {

arrRecord = csvInfoList.getItemAt(i) as Array;

var objTemp : Object = new Object();

for (var j : int = 0; j < arrRecord.length; j++) {

// 这句很重要,对应上面列做成时的dataField

objTemp["msItem" + j] = arrRecord[j];

}

arrDgData.addItem(objTemp);

}

dgData.dataProvider = arrDgData;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: