<?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);