关于动态刷新的问题!

关于动态刷新的问题!

本人新手,写了个小程序,想让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>
最后编辑liuefly 最后编辑于 2008-05-12 16:57:22
 

回复:关于动态刷新的问题!

不知道是我没看懂还是LZ你没说清楚...
刷新的话更新datagrid的dataprovider就可以了....
 

回复 2F Ericlu 的帖子

我的意思是想,只有数据库有数据更新,我这里的FLEX端不刷新页面就能更新数据!
 

回复:关于动态刷新的问题!

这样的话,有不少办法
你可以在页面上做个定时器定时刷新数据
也可以用lcds2.5的message功能把后台数据push到前台
也可以用FMS
 

回复:关于动态刷新的问题!

:O 我新人啊,刚碰这东西才不到一周,有没有什么具体的案例让看看啊?!
 

回复:关于动态刷新的问题!

要么你增删改后,重新查一次数据;要么在增删改数据成功后,手动更新DataGrid绑定的数据。
 

回复:关于动态刷新的问题!

你感觉那样做有什么效果吗?假如多人同时在线操作,不能更新数据,你怎么能保证你操作的有效性啊?
 

回复:关于动态刷新的问题!

多人同事操作一个表?应该在数据库里控制下吧
虚心,努力,
 

回复:关于动态刷新的问题!

但是你多人操作的时候,你必须要保证,你正在操作的数据是有效的啊!
 

回复:关于动态刷新的问题!

那其他技术做做的网站 是如何避免这个问题的呢?
好像都有这个问题吧。
我要是再者说了话,不刷新页面。你在回复我,不论我等多久, 我应该是看不到的吧。
虚心,努力,
 

回复:关于动态刷新的问题!

可是FLEX不是说支持动态更新数据吗?
 

回复:关于动态刷新的问题!

动态更新数据  怎么理解呢?
难道是说 检测数据库 一旦有更改就更新 DG的dataprovider么,真的可以这样么 ?那我也关注下 等高手来点解吧
虚心,努力,
 

回复:关于动态刷新的问题!

需要用到高级数据访问,支持rtmp协议的,messaging和data polling的一些技术,支持这个特性的服务有lcds、blazeds还有red5也可以,不过目前全部是java实现的,其他语言,.net可以去看看weborb,php和其他语言至今还没有提供rtmp的服务。
实际上就是建立一个socket连接,服务器和flash之间以socket来通信。当然这个也被封装起来了,用的时候在flex端只是一个producer和consumer组件,在java端直接写后台逻辑,几乎可以无视通讯上的问题。
个人认为red5更好用一些,可以直接从服务器去调用flash端的方法。
如果认为这太复杂,的确,对于一个datagrid来说,只是为了更新其结果就使用这样的技术有些小题大做,完全可以定时刷新或者找一些关键的操作后进行刷新。因为对于用户来说,不会长时间关注这个dg的。无需做成这样实时更新的。当然,你有需求非要做成这样的话,也不是不可以的。
这种服务更适合于长期连线的应用,比如即时通讯,网游,会议室,视频服务等
Protoss拥有高度的文明、先进的科技和强大的精神力量。但是由于长达千年的寿命,种群数量稀少,消耗不过繁殖能力出众的Zerg,险些被Zerg给灭族。
 

回复:关于动态刷新的问题!

大侠,哪里有例子很相关的文章给推荐下啊,你说的这些我也听过,可是没有资料啊!
 

回复:关于动态刷新的问题!

置顶就有个lcds的教程啊,不过没讲rtmp的应用,但是很简单的,lcds的sample里也自带了这些应用的例子,教程告诉你的就是帮你架设一个lcds的环境,样例你可以到lcds自带的sample里去找
Protoss拥有高度的文明、先进的科技和强大的精神力量。但是由于长达千年的寿命,种群数量稀少,消耗不过繁殖能力出众的Zerg,险些被Zerg给灭族。
 

回复:关于动态刷新的问题!

高手,请你说点具体的吧,我才碰这东西一个星期啊,你说的那个教程,你没发现我这个程序里已经用了远端对象了吗?

求具体实例!!!!!!!!!1
 

回复:关于动态刷新的问题!

lcds安装的目录下有个sample.war文件,将它发布,sample6就是的
Protoss拥有高度的文明、先进的科技和强大的精神力量。但是由于长达千年的寿命,种群数量稀少,消耗不过繁殖能力出众的Zerg,险些被Zerg给灭族。
 

回复:关于动态刷新的问题!

还是不太清楚,那东西怎么发布啊?
 

回复:关于动态刷新的问题!

继续顶!
Flex到底是什么?
 

回复:关于动态刷新的问题!

丢到tomcat安装目录下的webapps里去,重启tomcat就会自动发布。
老大你是搞java的吗?
Protoss拥有高度的文明、先进的科技和强大的精神力量。但是由于长达千年的寿命,种群数量稀少,消耗不过繁殖能力出众的Zerg,险些被Zerg给灭族。
 
1  /  2  页   12 跳转

版权所有 riachina.com   Sitemap

Powered by Discuz!NT 2.1.202    Copyright © 2001-2008 Comsenz Inc.
Processed in 0 second(s) (Cached).
返顶部