我的漫漫程序之旅

          專注于JavaWeb開發(fā)
          隨筆 - 39, 文章 - 310, 評(píng)論 - 411, 引用 - 0
          數(shù)據(jù)加載中……

          Flex3 CRUD 與Java后臺(tái)交互 完整Demo

          網(wǎng)上關(guān)于flex java curd的例子很少,官方的文檔不全且有錯(cuò)誤.今天自己做的個(gè)crud的例子,
          不帶分頁(yè)(分頁(yè)網(wǎng)上有很多例子了).
          上圖:


          mxml:
          <mx:Application
              
          xmlns:mx="http://www.adobe.com/2006/mxml"
              layout
          ="absolute">

             
          <mx:Script>
                  
          <![CDATA[
                      include "product.as";
                  
          ]]>
              
          </mx:Script>

              
          <mx:HTTPService
                  
          id="productService"
                  url
          ="http://localhost:8888/flex2/productServlet"
                  resultFormat
          ="e4x"
                  useProxy
          ="false" />  <!--url改成您的數(shù)據(jù)請(qǐng)求地址-->

              
          <mx:ViewStack id="viewstack1" width="731" height="473"  x="86.5" y="10">
              
          <!--index 0 -->
                  
          <mx:Canvas label="Form View" width="100%" height="100%">
                      
          <mx:Form horizontalCenter="0" verticalCenter="0"
                          backgroundColor
          ="#18E1CC" width="124" height="56">
                              
          <mx:Button label="進(jìn)入" click="fill()" width="100"/>
                      
          </mx:Form>
                  
          </mx:Canvas>
              
          <!--index 1-->    
                  
          <mx:Panel label="AdvancedDataGrid 顯示" width="100%" height="100%"  layout="absolute">
                      
          <mx:AdvancedDataGrid id="grid1" width="666" height="380" dataProvider="{_result.product}"  editable="true" itemEditEnd="updateHandler(event)"   x="10" y="10">
                            
          <mx:columns>
                               
          <mx:AdvancedDataGridColumn  dataField="id" headerText="ID"  editable="false"/>
                              
          <mx:AdvancedDataGridColumn  dataField="productName" headerText="產(chǎn)品名稱" />
                              
          <mx:AdvancedDataGridColumn  dataField="remark" headerText="備注" />
                            
          </mx:columns>
                      
          </mx:AdvancedDataGrid>
                      
                      
          <mx:Button x="60" y="401" label="添加" click="{viewstack1.selectedIndex = 2}"/>
                      
          <mx:Button label="刪除"   x="180" y="401" click="remove()"/>    
                  
          </mx:Panel>
              
          <!--index 2-->
                  
          <mx:Canvas label="添加新記錄" width="100%" height="100%" id="canvas3" >
                      
          <mx:Form
                              
          backgroundColor="#FFFFFF"  verticalCenter="-91" horizontalCenter="-138">
                              
                          
          <mx:FormItem label="" width="189" height="20">
                              
          <mx:Button  label="返回" click="this.viewstack1.selectedIndex=1"/>
                              
          <mx:TextInput id="hidden_id"  visible="false" />
                          
          </mx:FormItem>    
                          
                          
          <mx:FormItem label="產(chǎn)品名稱">
                              
          <mx:TextInput id="productName"/>
                          
          </mx:FormItem>
                          
                          
          <mx:FormItem label="備注">
                              
          <mx:TextInput id="remark"/>
                          
          </mx:FormItem>
                          
                          
          <mx:Button label="保存" click="insertProduct()" id="btn" />
                      
          </mx:Form>
                  
          </mx:Canvas>
                  
              
          </mx:ViewStack>

             
          </mx:Application>
          as:
          import mx.collections.XMLListCollection;
          import mx.controls.Alert;
          import mx.controls.TextInput;
          import mx.events.AdvancedDataGridEvent;
          import mx.events.CloseEvent;
          import mx.rpc.events.ResultEvent;

          private var params:Object = new Object();

          //private var ld:XMLListCollection; 官方文檔的XMLListCollection并不能用,例子有問題郁悶
          [Bindable]
          private var _result : XML ; //注意文件名防止沖突
          /**
           * xml數(shù)據(jù)的渲染
           * 
          */

          public function resultHandler(event:ResultEvent):void 
          {
              _result 
          = XML(event.result);
          }

          /**
           * 查詢所有產(chǎn)品的按鈕事件
           * 
          */

          public function insertItemHandler(event:ResultEvent):void 
          {
              fill();
          }

          /**
           * 查詢所有產(chǎn)品的方法 
           * 
          */

          public function fill():void
          {
              
          //為productService(HTTPService) 重新綁定監(jiān)聽器(查詢)
              productService.removeEventListener(ResultEvent.RESULT,insertItemHandler);
              productService.addEventListener(ResultEvent.RESULT,resultHandler);
              productService.method 
          = "GET";
              
          //要傳遞的參數(shù)
              params['method'= "findAll";
              productService.cancel();
              productService.send(params);
              
          //切換到Grid視圖
              viewstack1.selectedIndex=1;
          }

          /**
           * 插入產(chǎn)品
           * 
          */

          public function insertProduct():void
          {
              
          //綁定新的監(jiān)聽器(插入)
              productService.removeEventListener(ResultEvent.RESULT,resultHandler);
              productService.addEventListener(ResultEvent.RESULT,insertItemHandler);
              productService.method 
          = "POST";
              
          //傳遞Form表單參數(shù)
              params = {"method""save""id": NaN, "productName": productName.text,
                           
          "remark": remark.text}
          ;
              productService.cancel();
              productService.send(params);
              clearInputFields();
          }

          /**
           * 
           * 更新記錄的事件處理函數(shù)
           * 
           * 
          */

          public function updateHandler(event:AdvancedDataGridEvent):void
          {
              
          //取消的話不更新
              if(event.reason == "cancelled")
              
          {
                  
          return;
              }

              
          //重新注冊(cè)
              productService.removeEventListener(ResultEvent.RESULT,resultHandler);
              productService.addEventListener(ResultEvent.RESULT,insertItemHandler);
               
          //得到輸入后的新數(shù)據(jù)    
               var newData:String = (TextInput(event.currentTarget.itemEditorInstance)).text;
               
          //得到輸入前的三個(gè)數(shù)據(jù)
               var _id : int  = this.grid1.selectedItem["id"];
               var _productName :String 
          = this.grid1.selectedItem["productName"];
               var _remark :String 
          = this.grid1.selectedItem["remark"];
               
          //第二列為產(chǎn)品名稱
               if(event.columnIndex == 1)
               
          {
                   _productName 
          = newData;
               }

               
          //第三列為備注
               if(event.columnIndex == 2)
               
          {
                   _remark 
          = newData;
               }

               params 
          = {"method""update""id": _id,"productName":_productName,"remark":_remark};
               productService.cancel();
               productService.send(params);
          }


          /**
           * 刪除的方法
           * 
          */

          public function remove() : void
          {
              var index:
          int = this.grid1.selectedIndex;
              
          if(index == -1)
              
          {
                   Alert.show(
          "您沒有選擇任何記錄","提示");
                   
          return;
              }

               Alert.yesLabel 
          = "確定";
               Alert.cancelLabel 
          = "取消";
               Alert.show(
          "確定要?jiǎng)h除嗎?","提示",Alert.YES|Alert.CANCEL,this,defaultCloseHandler);
          }

          /**
           * 處理選擇是否刪除后的事件
           * 
           * 
          */

          public function defaultCloseHandler(event:CloseEvent):void
          {
               
          //如果點(diǎn)擊了確定
               if(event.detail == Alert.YES)
               
          {
                    productService.removeEventListener(ResultEvent.RESULT,resultHandler);
                   productService.addEventListener(ResultEvent.RESULT,insertItemHandler);
                    var id : String  
          = this.grid1.selectedItem["id"];
                   params 
          = {"method""remove""id": id};
                   productService.cancel();
                   productService.send(params);
               }

          }

          /**
           * 清除form中的屬性值
           * 
          */

          private function clearInputFields():void
          {
              productName.text 
          = "";
              remark.text 
          = "";
          }

          源碼下載地址:
          點(diǎn)擊下載


          posted on 2008-11-13 16:04 々上善若水々 閱讀(4720) 評(píng)論(2)  編輯  收藏

          評(píng)論

          # re: Flex3 CRUD 與Java后臺(tái)交互 完整Demo[未登錄]  回復(fù)  更多評(píng)論   

          基于WEBSERVICE的應(yīng)用 網(wǎng)絡(luò)傳輸速度很慢,為什么不用 BlazeDS 呢?
          BlazeDS 提供 RPC 和 MESSAGE 等服務(wù),做應(yīng)用開發(fā)還是不錯(cuò)的。
          2008-11-14 09:52 | conjs

          # re: Flex3 CRUD 與Java后臺(tái)交互 完整Demo[未登錄]  回復(fù)  更多評(píng)論   

          服務(wù)端的代碼也順便放出來(lái)吧
          2011-11-11 16:54 | 大頭

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 江口县| 海淀区| 密云县| 漳州市| 平度市| 潍坊市| 安图县| 黑河市| 习水县| 灵武市| 富锦市| 闽清县| 安岳县| 泽普县| 长阳| 磐安县| 宜兴市| 繁昌县| 元氏县| 门头沟区| 宕昌县| 双流县| 鄂尔多斯市| 渭源县| 潮州市| 通州市| 汽车| 淮阳县| 游戏| 修水县| 安顺市| 清徐县| 汝阳县| 文山县| 陵水| 永年县| 滁州市| 惠安县| 蓬莱市| 日照市| 隆回县|