我的漫漫程序之旅

          專注于JavaWeb開發
          隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
          數據加載中……

          Flex3 CRUD 與Java后臺交互 完整Demo

          網上關于flex java curd的例子很少,官方的文檔不全且有錯誤.今天自己做的個crud的例子,
          不帶分頁(分頁網上有很多例子了).
          上圖:


          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改成您的數據請求地址-->

              
          <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="進入" 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="產品名稱" />
                              
          <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="產品名稱">
                              
          <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數據的渲染
           * 
          */

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

          /**
           * 查詢所有產品的按鈕事件
           * 
          */

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

          /**
           * 查詢所有產品的方法 
           * 
          */

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

          /**
           * 插入產品
           * 
          */

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

          /**
           * 
           * 更新記錄的事件處理函數
           * 
           * 
          */

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

              
          //重新注冊
              productService.removeEventListener(ResultEvent.RESULT,resultHandler);
              productService.addEventListener(ResultEvent.RESULT,insertItemHandler);
               
          //得到輸入后的新數據    
               var newData:String = (TextInput(event.currentTarget.itemEditorInstance)).text;
               
          //得到輸入前的三個數據
               var _id : int  = this.grid1.selectedItem["id"];
               var _productName :String 
          = this.grid1.selectedItem["productName"];
               var _remark :String 
          = this.grid1.selectedItem["remark"];
               
          //第二列為產品名稱
               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(
          "確定要刪除嗎?","提示",Alert.YES|Alert.CANCEL,this,defaultCloseHandler);
          }

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

          public function defaultCloseHandler(event:CloseEvent):void
          {
               
          //如果點擊了確定
               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 
          = "";
          }

          源碼下載地址:
          點擊下載


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

          評論

          # re: Flex3 CRUD 與Java后臺交互 完整Demo[未登錄]  回復  更多評論   

          基于WEBSERVICE的應用 網絡傳輸速度很慢,為什么不用 BlazeDS 呢?
          BlazeDS 提供 RPC 和 MESSAGE 等服務,做應用開發還是不錯的。
          2008-11-14 09:52 | conjs

          # re: Flex3 CRUD 與Java后臺交互 完整Demo[未登錄]  回復  更多評論   

          服務端的代碼也順便放出來吧
          2011-11-11 16:54 | 大頭

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 内黄县| 大关县| 确山县| 依兰县| 涪陵区| 凌云县| 张家川| 灯塔市| 余江县| 阜阳市| 岳阳市| 汉源县| 芒康县| 遵义市| 金沙县| 十堰市| 株洲县| 托克逊县| 卫辉市| 西青区| 余庆县| 原平市| 桐梓县| 武义县| 中超| 洪江市| 抚顺市| 乐山市| 三江| 常熟市| 宁南县| 镶黄旗| 黄冈市| 文山县| 三江| 阿坝县| 勐海县| 长葛市| 始兴县| 南城县| 重庆市|