flash文件访问及datagrid的使用

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;
}

修改表格中的数据后,单击保存后重新打开网页,修改后的数据仍然保存在表格中,这就是利用了共享对象来进行本地文件保存。

你可能感兴趣的:(datagrid)