import mx.rpc.http.HTTPService;
import mx.rpc.events.ResultEvent;
import mx.binding.utils.BindingUtils;
import mx.controls.Alert;
import mx.events.*;
import mx.collections.ArrayCollection;
import mx.rpc.events.FaultEvent;
import mx.controls.dataGridClasses.DataGridColumn;
import mx.controls.dataGridClasses.DataGridItemRenderer;
import mx.events.DataGridEvent;
import mx.events.CloseEvent;
import mx.managers.CursorManager;
import mx.utils.ObjectUtil;
import mx.rpc.AsyncToken;
import mx.utils.StringUtil;
[Bindable]
private var xmlData:XML=new XML();
public const ENDPOINT_URL:String = "http://localhost/BigpapaPHP/BigpapaPHP.php";
private var httpservice:HTTPService = new HTTPService();
//初始化
private function Init():void{
httpservice.url = ENDPOINT_URL;
httpservice.method = "POST";
httpservice.useProxy = false;
httpservice.resultFormat = "e4x";
initfill();
}
//查询出所有数据
private function initfill():void{
CursorManager.setBusyCursor();
var sql:String = "select * from ItemsbyContainer";
var parameters:* = {
"sql": sql
}
doResultcontainer("FindAll",parameters,fillHandler);
}
//传递sql给php页面,并添加监听
private function doResultcontainer(Methodname:String,parameters:Object,callback:Function):void{
parameters['method'] = Methodname;
httpservice.request = parameters;
httpservice.addEventListener(ResultEvent.RESULT, resultHandler);
httpservice.addEventListener(FaultEvent.FAULT, faultHandler);
var call:AsyncToken = httpservice.send();
call.request_params = httpservice.request;
call.handler = callback;
}
//查询的监听函数
private function fillHandler(e:Object):void
{
if (e.isError)
{
Alert.show("Error: " + e.data.toString());
}
else
{
this.xmlData=XML(e.data);
CursorManager.removeBusyCursor();
}
}
//httpService请求成功的监听方法
public function resultHandler(e:ResultEvent):void
{
var topass:* = deserialize(e.result, e);
e.token.handler.call(null, topass);
}
//httpService请求失败的监听方法
public function faultHandler(e:FaultEvent):void
{
Alert.show("Connection error: " + e.fault.faultDetail + "!"+e.message.toString());
}
//异步处理函数
public function deserialize(obj:*, e:*):*
{
var toret:Object = {};
toret.originalEvent = e;
if (obj.data.elements("error").length() > 0)
{
toret.isError = true;
toret.data = obj.data;
}
else
{
toret.isError = false;
toret.metadata = obj.metadata;
toret.data = obj.data;
}
return toret;
}
private function btnAdd_click():void
{
this.currentState="Edit";
this.btnEdit.label=this.btnAdd.label;
}
private function btnModify_click():void
{
this.currentState="Edit";
this.btnEdit.label=this.btnModify.label;
txtName.text = xmlData.row[dgContainer.selectedIndex].Name;
txaDescription.text = xmlData.row[dgContainer.selectedIndex].Description;
txtPrice.text = xmlData.row[dgContainer.selectedIndex].Price;
if(xmlData.row[dgContainer.selectedIndex].Container =="Pint"){
rbgContainer.selectedValue = "Pint"
}else{
rbgContainer.selectedValue = "Quart"
}
txtServes.text = xmlData.row[dgContainer.selectedIndex].Serves;
if(xmlData.row[dgContainer.selectedIndex].LowCarb == 1){
cbxLowCarb.selected = true;
}
btnEdit.enabled = true;
}
private function btnDelete_click():void
{
this.currentState="Edit";
this.btnEdit.label=this.btnDelete.label;
txtName.text = xmlData.row[dgContainer.selectedIndex].Name;
txaDescription.text = xmlData.row[dgContainer.selectedIndex].Description;
txtPrice.text = xmlData.row[dgContainer.selectedIndex].Price;
if(xmlData.row[dgContainer.selectedIndex].Container =="Pint"){
rbgContainer.selectedValue = "Pint"
}else{
rbgContainer.selectedValue = "Quart"
}
txtServes.text = xmlData.row[dgContainer.selectedIndex].Serves;
if(xmlData.row[dgContainer.selectedIndex].LowCarb == 1){
cbxLowCarb.selected = true;
}
btnEdit.enabled = true;
btnEdit.enabled=true;
}
private function btnEdit_click():void
{
var i:Number = 0;
if(cbxLowCarb.selected)
i = 1;
if(this.btnEdit.label=="Add"){
var sql:String = "insert into Itemsbycontainer(Name,Description,Price,Container,Serves,LowCarb) values('"+txtName.text+"','"+txaDescription.text+"',"+txtPrice.text+",'"+rbgContainer.selectedValue+"',"+txtServes.text+","+i+")";
var parameters:* = {
"sql":sql
}
doResultcontainer("Insert",parameters,dataUpdate);
}else if(this.btnEdit.label=="Modify"){
var updata:String = "update Itemsbycontainer set Name='"+txtName.text+"' where bycontainerID="+this.dgContainer.selectedItem.byContainerID;
var parameterUpdate:* = {
"sql":updata
}
doResultcontainer("Update",parameterUpdate,dataUpdate);
}else if(this.btnEdit.label=="Delete"){
var del:String = "delete from Itemsbycontainer where bycontainerID="+this.dgContainer.selectedItem.byContainerID;
var parameterdel:* = {
"sql":del
}
doResultcontainer("Delete",parameterdel,dataUpdate);
}
}
//添加数据的监听方法,以便在添加成功或失败后进行自定义操作
private function dataUpdate(obj:Object):void{
if (obj.isError)
{
Alert.show("Error: " + obj.data.error);
}
else
{
initfill();
}
}
private function goToDefaultState():void{
this.currentState="";
}
private function dgContainer_itemClick():void
{
}
//验证方法
private function change():void
{
for each(var obj:Object in this.getChildren())
{
if(obj is Canvas)
{
for each(var tObj:Object in obj.getChildren())
{
if(tObj is TextInput)
{
var txtInput:TextInput=TextInput(tObj);
if(StringUtil.trim(txtInput.text).length<1)
{
txtInput.errorString="Not allow empty";
this.btnEdit.enabled=false;
return;
}else{
txtInput.errorString="";
}
}else if(tObj is TextArea)
{
var txtArea:TextArea=TextArea(tObj)
if(StringUtil.trim(txtArea.text).length<1)
{
txtArea.errorString="Not allow empty";
this.btnEdit.enabled=false;
return;
}else{
txtArea.errorString="";
}
}
}
}
}
this.btnEdit.enabled=true;
}
PHP
function findAll() {
global $conn, $filter_field, $filter_type;
$recordset = mysql_query(@$_REQUEST['sql'], $conn);
$toret = array();
while ($row_recordset = mysql_fetch_assoc($recordset)) {
array_push($toret, $row_recordset);
}
$toret = array(
"data" => $toret,
"metadata" => array (
"totalRows" => $totalrows,
"pageNum" => $pageNum
)
);
return $toret;
}
function insert() {
global $conn;
$query_insert = str_replace('//','',$_REQUEST['sql']);
$ok = mysql_query($query_insert);
$toret = '<?xml version="1.0" encoding="utf8"><Return><return>'.$query_insert.'</return></Return>';
return $toret;
}
function update() {
global $conn;
$query_insert = str_replace('//','',$_REQUEST['sql']);
$ok = mysql_query($query_insert);
$toret = '<?xml version="1.0" encoding="utf8"><Return><return>'.$query_insert.'</return></Return>';
return $toret;
}
function delete() {
global $conn;
$query_insert = str_replace('//','',$_REQUEST['sql']);
$ok = mysql_query($query_insert);
$toret = '<?xml version="1.0" encoding="utf8"><Return><return>'.$query_insert.'</return></Return>';
return $toret;
}
if ($conn === false) {
$ret = array(
"data" => array("error" => "database connection error, please check your settings !"),
"metadata" => array()
);
} else {
mysql_select_db($database_conn, $conn);
switch (@$_REQUEST["method"]) {
case "FindAll":
$ret = findAll();
break;
case "Insert":
$ret = insert();
break;
case "Update":
$ret = update();
break;
case "Delete":
$ret = delete();
break;
case "Count":
$ret = rowCount();
break;
}
}
这段首先判断传递的数据源是否存在,然后再判断它要执行的是什么SQL语句,
$ref=findAll();是要执行findAll()这个方法
在findAll()方法查询数据,然后返回结果
好久没做关于Flex的程序了,不知道我解释的对不对