<?php require_once ('./vo/org/corlan/VOAuthor.php'); //conection info define( "DATABASE_SERVER", "localhost"); define( "DATABASE_USERNAME", "root"); define( "DATABASE_PASSWORD", ""); define( "DATABASE_NAME", "mysite"); class MyService { public function getData() { //connect to the database. $mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD); mysql_select_db(DATABASE_NAME); mysql_query("SET NAMES UTF8"); //retrieve all rows $query = "SELECT id_aut, fname_aut, lname_aut FROM authors_aut ORDER BY fname_aut"; $result = mysql_query($query); $ret = array(); while ($row = mysql_fetch_object($result)) { $tmp = new VOAuthor(); $tmp->id_aut = $row->id_aut; $tmp->fname_aut = $row->fname_aut; $tmp->lname_aut = $row->lname_aut; $ret[] = $tmp; } mysql_free_result($result); return $ret; } public function saveData($author) { if ($author == NULL) return NULL; //connect to the database. $mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD); mysql_select_db(DATABASE_NAME); //save changes $query = "UPDATE authors_aut SET fname_aut='".$author->fname_aut."', lname_aut='".$author->lname_aut."' WHERE id_aut=". $author->id_aut; $result = mysql_query($query); return NULL; } } ?> ------------amfphp\services\vo\org\VOAuthor.php----------------- <?php class VOAuthor { public $id_aut; public $fname_aut; public $lname_aut; // explicit actionscript class var $_explicitType = "org.corlan.VOAuthor"; } ?> --------------------------mxml文件------------------------------------ --------------------RemotingVOAuthor.mxml----------------------
<mx:DataGrid id="myGrid" dataProvider="{myRemote.getData.lastResult}" editable="true" itemEditEnd="save(event)"> <mx:columns> <mx:DataGridColumn dataField="id_aut" editable="false"/> <mx:DataGridColumn dataField="fname_aut"/> <mx:DataGridColumn dataField="lname_aut"/> </mx:columns> </mx:DataGrid> </mx:VBox> </mx:Application> ----------------org\corlan\VOAuthor.as-----------------package org.corlan { [RemoteClass(alias="org.corlan.VOAuthor")] [Bindable] public class VOAuthor { public var id_aut:int; public var fname_aut:String; public var lname_aut:String; } } //----------------------------分析------------------------------- 1 面向对象的设计思路,抽象出两个模型,一个是php,一个是.as格式,互相对应,这两个类的成员变量命名是一致的。 2 注意文件的组织方式,模型文件均放在相关目录下例如:org\corlan\VOAuthor.as,类文件首字母大写 3 注意{myRemote.getData()},调用以后没有立即处理数据,而是通过"{myRemote.getData.lastResult}"的lastResult属性去读取缓存中的访问结果。 4 前端的mxml的script中: var dataGrid:DataGrid = event.target as DataGrid; //获取当前编辑的单元格对象 var dsColumnIndex:Number = event.columnIndex; //列号 var col:DataGridColumn = dataGrid.columns[dsColumnIndex]; //? var newValue:String = dataGrid.itemEditorInstance[col.editorDataField]; //读取新值,这里要研究下 //dataGrid各个属性的含义 var author:VOAuthor = event.itemRenderer.data as VOAuthor; //获取当前显示的单元格对象 author[dsFieldName] = newValue; //更新显示状态 5 webservice的方式直接调用php中的存储方法: myRemote.saveData(author);
