FLEX在DataGrid中使用net傳回來的DataTable數據 - [Flex - AS3]
FLEX在DataGrid中使用net傳回來的DataTable數據 - [Flex - AS3]
版權聲明:轉載時請以超鏈接形式標明文章原始出處和作者信息及本聲明http://andychen0208.blogbus.com/logs/45943891.html
好久沒更新BLOG了.
最近在重構游戲引擎,服務端編寫還是需要多考慮的,前期的很多處理方式因為時間關系存在一些問題. 所以客戶端這塊就分發給其他程序員同事了.
但他們在處理的時候碰到比較多的問題,解決得還不到位,有些問題拖的時間也比較久.
這里說下剛針對排行問題的處理:
問題是這樣的:游戲中要實現排行,為了處理的方便,服務器端傳回來排行數據是以dataTable格式存儲的.現在需要在FLEX中的DataGrid中顯示出來.上個周給了他們提示,需要做轉換,但他們一直沒轉換成功,也沒找到方法,更沒學會跟蹤和分析,郁悶啊.
廢話不說了,通過跟蹤與分析,發現NET傳回來的DATATABLE經過FLEX處理后,字段和數據分開存放了.
分別存放在:serverInfo.columnNames和serverInfo.initialData中, 而FLEX DATAGRID的讀取的數據格式,其中一種是相當于鍵值形式的.找到這個出口后,直接在FLEX中把數據轉換成想要的數據格式就好了.
<code>
//=====================================================
// dotNet中傳遞回來的dataTable轉換成 Flex中DataGride 能綁定的Array
// 本方法,是針對目前的排行做的處理
//
// 字段中的 "sort" 表示排序序號,由Flex端生成
//
//e.g.
// <code>
// var obj = notification.getBody();
// var data:ArrayCollection = new ArrayCollection(Common.dataTabelToArray(obj));
// mainScreen.dataShow.myGrid.dataProvider=data;
//</code>
// parames @data NET中傳過來的DataTable數據
//=====================================================
public static function dataTabelToArray(data:Object):Array
{
if (data==null ) return null;
var returnArr:Array=[];
var columnsArr:Array = data.serverInfo.columnNames; //字段
var dataArr:Array = data.serverInfo.initialData; //數據
var obj:Object;
var sort:int = 0;
for each (var _rowData:Object in dataArr)
{
sort ++ ;
obj =new Object();
for (var i:* in columnsArr)
{
obj["sort"] = sort;
obj[columnsArr[i]] = _rowData[i];
}
returnArr.push(obj);
}
data = null;
columnsArr = null;
dataArr = null;
return returnArr;
}
</code>
posted on 2010-12-07 14:05 aiaiwoo 閱讀(884) 評論(0) 編輯 收藏 所屬分類: AC3/FLEX