flash檔案訪問及datagrid的使用
昨天搞定用flash訪問本地檔案後,今天研究了一下datagrid的使用。以下為利用datagrid及共用對象將資料儲存在本地檔案的樣本:
代碼如下:
//此段代碼放在主幀中
System.useCodepage = true;
//產生SharedObject共用對象,檔案名稱為employee.sol
myLSO = SharedObject.getLocal("employee");
//如果本地沒有資料的場合
if (myLSO.data.myObj == undefined) {
//組datagrid列名稱
dg0.columnNames = ["Order"];
//資料對象數組
myDP0 = new Array();
for (var i = 0; i<3; i++) {
myDP0.addItem({Order:i});
}
//將資料裝入組datagrid對象中
dg0.dataProvider = myDP0;
//設定使用者資訊datagrid列名稱
dg1.columnNames = ["id", "Name"];
//資料對象數組
myDP1 = new Array();
for (var i = 0; i<6; i++) {
myDP1.addItem({id:i, Name:"rainbow"+i});
}
dg1.dataProvider = myDP1;
} else {
//讀取本機資料
var order = myLSO.data.myObj.order;
var employee = myLSO.data.myObj.employee;
//將資料裝入datagrid對象中
dg0.dataProvider = order;
dg1.dataProvider = employee;
}
//設定datagrid對象的捲軸
dg0.vScrollPolicy = "off";
dg0.hScrollPolicy = "off";
//標題高度
dg0.setHeaderHeight(30);
dg1.vScrollPolicy = "on";
dg1.hScrollPolicy = "off";
dg1.setHeaderHeight(30);
//捲軸事件
//一個組2個員工
var myEvent = new Object();
myEvent.scroll = myEvent.change=function () {
if (dg1.vPosition%2>0) {
dg0.vPosition = (dg1.vPosition-1)/2;
} else {
dg0.vPosition = dg1.vPosition/2;
}
if (dg1.selectedIndex%2>0) {
dg0.selectedIndex = (dg1.selectedIndex-1)/2;
} else {
dg0.selectedIndex = dg1.selectedIndex/2;
}
};
//設定滾動位置
var myEvent1 = new Object();
myEvent1.scroll = myEvent1.change=function () {
dg1.vPosition = dg0.vPosition*2-1;
};
//選擇事件
var myEvent2 = new Object();
myEvent2.change = function() {
dg1.selectedIndex = dg0.selectedIndex*2;
};
//為datagrid對象加事件
dg1.addEventListener("scroll", myEvent);
dg1.addEventListener("change", myEvent);
dg0.addEventListener("scroll", myEvent1);
dg0.addEventListener("change", myEvent2);
//產生並修改datagrid的右鍵菜單
var focusInEvent = new Object();
focusInEvent.focusIn = function() {
myMenu = new ContextMenu();
myMenu.hideBuiltInItems();
myMenu.customItems.push(new ContextMenuItem("AAAAAA", test01));
myMenu.customItems.push(new ContextMenuItem("BBBBBB", test01));
dg0.menu = myMenu;
dg1.menu = myMenu;
};
dg0.addEventListener("focusIn", focusInEvent);
dg1.addEventListener("focusIn", focusInEvent);
//右鍵菜單事件
function test01(obj, item) {
trace("test01");
}
//以下代碼放在Save按鈕中
on (click) {
myLSO = SharedObject.getLocal("employee");
myObj = [];
order = new Array();
for (var i = 0; i<this._parent.dg0.rowCount; i++) {
order.push({Order:this._parent.dg0.getItemAt(i)["Order"]});
}
employee = new Array();
for (var i = 0; i<this._parent.dg1.rowCount; i++) {
employee.push({id:this._parent.dg1.getItemAt(i)["id"], Name:this._parent.dg1.getItemAt(i)["Name"]});
}
myObj.order = order;
myObj.employee = employee;
myLSO.data.myObj = myObj;
}
修改表格中的資料後,單擊儲存後重新開啟網頁,修改後的資料仍然儲存在表格中,這就是利用了共用對象來進行本地檔案儲存。