本人新手,写了个小程序,想让datagrid中的数据能够动态刷新,请教高手帮忙!
下面是MXML
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="
http://www.adobe.com/2006/mxml" layout="absolute" creati cornerRadius="20">
<mx:Script>
<![CDATA[
import mx.messaging.AbstractConsumer;
import mx.controls.List;
import mx.controls.Alert;
import mx.validators.ValidationResult;
import mx.rpc.events.ResultEvent;
import mx.events.ValidationResultEvent;
public var buttonvalue:int=0;
private function dataGrid():void
{
add.enabled=false;
save.enabled=false;
modify.enabled=true;
del.enabled=true;
}
private function addButton():void
{
c1.text="";
c2.text="";
c3.text="";
add.enabled=false;
save.enabled=true;
modify.enabled=false;
del.enabled=false;
add_save();
}
private function modifyButton():void
{
add.enabled=false;
save.enabled=true;
modify.enabled=false;
del.enabled=false;
modify_save();
}
private function add_save():void
{
buttonvalue=0;
}
private function modify_save():void
{
buttonvalue=1;
}
private function saveButton():void
{
if(buttonvalue==1)
{
dataModify();
}
else{
dataAdd();
}
}
private function dataModify():void
{
if(numV.validate().type==ValidationResultEvent.INVALID){
Alert.show("数字验证失败!");
}
else{
var COL_ID:int;
var COL_DATE:String;
var COL_VARCHAR:String;
var COL_NUMBER:Number;
COL_VARCHAR=c1.text;
COL_DATE=c2.text;
COL_NUMBER=Number(c3.text);
COL_ID=int(dg.selectedItem.COL_ID);
liii.Update(COL_VARCHAR,COL_DATE,COL_NUMBER,COL_ID);
dataSelect();
Alert.show("数据更新成功!");
}
}
private function dataDelete():void
{
var COL_ID:int;
COL_ID=int(dg.selectedItem.COL_ID);
liiii.Delete(COL_ID);
dataSelect();
Alert.show("数据删除成功!");
}
private function dataAdd():void
{
if(numV.validate().type==ValidationResultEvent.INVALID){
Alert.show("数字验证失败,请刷新页面!");
}
else{
var COL_DATE:String;
var COL_VARCHAR:String;
var COL_NUMBER:Number;
COL_VARCHAR=c1.text;
COL_DATE=c2.text;
COL_NUMBER=Number(c3.text);
lii.Insert(COL_VARCHAR,COL_DATE,COL_NUMBER);
dataSelect();
Alert.show("数据插入成功!");
}
}
public function dataSelect():void
{
li.Select("SELECt COL_ID,COL_VARCHAR,to_char(col_date,'mm/dd/yyyy') COL_DATE,col_number from flex_table");
li.addEventListener(ResultEvent.RESULT,returnHandler);
}
public function returnHandler(event:ResultEvent):void{
dg.dataProvider = event.result;
}
]]>
</mx:Script>
<mx:NumberValidator id="numV" source="{c3}" property="text"
domain="int"
integerError="必须是整数!"
invalidCharError='输入了非数字字符!'
requiredFieldError="必须输入数字!"
trigger="{save}" triggerEvent="click"/>
<mx:RemoteObject id="li" destination="li"/>
<mx:RemoteObject id="lii" destination="lii"/>
<mx:RemoteObject id="liii" destination="liii"/>
<mx:RemoteObject id="liiii" destination="liiii"/>
<mx:Panel x="0" y="0" width="885" height="525" layout="absolute" cornerRadius="20" alpha="1.0" title="Flex Example">
<mx:DataGrid y="34" width="433" x="19" height="263" id="dg" change="dataGrid()">
<mx:columns>
<mx:DataGridColumn headerText="COL_ID" dataField="COL_ID"/>
<mx:DataGridColumn headerText="COL_VARCHAR" dataField="COL_VARCHAR"/>
<mx:DataGridColumn headerText="COL_DATE" dataField="COL_DATE"/>
<mx:DataGridColumn headerText="COL_NUMBER" dataField="COL_NUMBER"/>
</mx:columns>
</mx:DataGrid>
<mx:Panel x="476" y="34" width="343" height="338" layout="absolute" cornerRadius="20">
<mx:Label x="27" y="38" text="COL_VARCHAR" />
<mx:Label x="27" y="94" text="COL_DATE"/>
<mx:TextInput x="131" y="36" id="c1" text="{dg.selectedItem.COL_VARCHAR}" />
<mx:DateField x="131" y="92" width="160" id="c2" text="{dg.selectedItem.COL_DATE}" borderColor="#ADCCE1" color="#83AFB8"/>
<mx:Label x="27" y="160" text="COL_NUMBER" id="COL_NUMBER"/>
<mx:TextInput x="131" y="158" id="c3" text="{dg.selectedItem.COL_NUMBER}"/>
</mx:Panel>
<mx:Button x="19" y="337" label=" Add " id="add" click="addButton()" cornerRadius="10"/>
<mx:Button x="128" y="337" label=" Save " id="save" click="saveButton()" enabled="false" cornerRadius="10"/>
<mx:Button x="239" y="337" label="Modify" id="modify" enabled="false" click="modifyButton()" cornerRadius="10"/>
<mx:Button x="346" y="337" label="Delete" id="del" click="dataDelete()" enabled="false" cornerRadius="10"/>
</mx:Panel>
</mx:Application>