Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92676
  • 博文数量: 41
  • 博客积分: 2650
  • 博客等级: 少校
  • 技术积分: 680
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-23 16:26
文章分类

全部博文(41)

文章存档

2011年(1)

2008年(40)

我的朋友

分类:

2008-06-24 16:25:55

Flex创建可编辑以及分页的DataGrid

   之前那篇文章:使用Flex,Java,Json更新Mysql数据库 已经介绍了如何使用Json格式的数据从后台用remoteObject的方法读取后现在Flex的DataGrid中。但是如果数据的量很大,就要使用scroll的方式来浏览了,这样造就了很多不变。参考了javally的应用分页列表组件 后结合两个程序就可以比较完美的实现一个可以编辑的以及分页的dataGrid了。使得用户可以读取数据库数据,然后在编辑后,保存数据。有兴趣的话最后先阅读这两篇文章,这样之后就很容易理解了。关于使用Blazeds的配置我就省略了,请自行参考。

  java后台的处理同使用Flex,Java,Json更新Mysql数据库 大致上一样,只是更改了一些方法的名字。现在主要贴出前台Flex主程序的代码:

<?xml version="1.0"?>
<!-- DataGrid control example. -->
<mx:Application xmlns:mx=""
     creationComplete="creationComplete()"
    xmlns:user="comp.*">
    <mx:Script>
        <![CDATA[
        import mx.controls.Alert;
        import mx.collections.ArrayCollection;
        import mx.rpc.events.ResultEvent;
        import com.adobe.serialization.json.JSON;
        import mx.rpc.events.ResultEvent;
        import mx.collections.ArrayCollection;    
        
           [Bindable]
           private var ac:ArrayCollection;
           
//如果查询出来的数据为xml格式,调用这个方法

           private function loadXmlData(xml:XML):void
           {
              ac=new ArrayCollection();
              for each(var item:Object in xml.employee)
//将Table换成XML中的根元素名称

              {
                  ac.addItem(item);
              }
              myDG.init(ac);
           }
           private function getGridDataAction():void{
            getDataObj.getGridData();
            labNote.text="正在读取...请稍候";
        }
           
//查询出来的结果为数组,直接传递给init即可

            private function loadAcData(event:ResultEvent):void
            {
                var rawArray:Array;
                var rawData:String = event.result as String;
             rawArray = JSON.decode(rawData) as Array;
                ac=new ArrayCollection();    
                ac = new ArrayCollection(rawArray);            
             myDG.init(ac);
             labNote.text="读取成功,总共"+ac.length+"条员工信息!";
            }
            
           private function creationComplete():void
           {
               
//loadXmlData(employees);

               getDataObj.getOperation('getGridData').send();
           }
           
           private function updateGridDataAction():void{
            
//var objSend:Object = new Object();

            var dataString:String = JSON.encode(ac.toArray());
            
//dataString = escape(dataString);

            updateDataObj.updateGridDataToDB(dataString);
            labNote.text = "请稍后...正在处理";
        }
        private function updateGridDataResult(event:ResultEvent):void{
            labNote.text = String(event.result as String);
        }
        ]]>
    </mx:Script>
        
    <!-- remoteObject used to get data from mysql database -->
     <mx:RemoteObject id="getDataObj" destination="getGridData" source="pagegrid.PageGrid" showBusyCursor="true">
     <mx:method name="getGridData" result="loadAcData(event)"/>
    </mx:RemoteObject>
    <!-- update data to mysql database-->
    <mx:RemoteObject id="updateDataObj" destination="updateGridData" showBusyCursor="true" result="updateGridDataResult(event)"/>
    <mx:Panel title="Employee Inforamtion Management System" height="288" width="100%"
        paddingTop="10" paddingLeft="10" paddingRight="10" layout="absolute">

    <!--设置pageSize为8,表示每页显示8条记录,不设置默认显示5条记录-->
       <!--dataGridDoubleClick="showUserInfo()" -->
    <user:PaginationDataGrid id="myDG" label="Employees"
      width="100%" height="175" pageSize="5">

       <user:arrColumns><!--为这个标签设置DataGridColumn,指示在DataGrid上显示的列-->

            <mx:DataGridColumn headerText="ID" dataField="id" editable="false"/>
            <mx:DataGridColumn headerText="Name" dataField="name" editable="true"/>
            <mx:DataGridColumn headerText="Gender" dataField="gender" editable="false"/>
            <mx:DataGridColumn headerText="Department" dataField="department" editable="false"/>
       </user:arrColumns>

    </user:PaginationDataGrid>    
    <mx:Button label="Refresh" x="417" y="183" width="120" click="getGridDataAction()"/>
    <mx:Button id="updateDataBtn" x="72" y="183" label="Update" width="120" textAlign="center" click="updateGridDataAction()"/>
    <mx:Label id="labNote" x="10" y="214" width="637" color="#0000FF" height="24" fontSize="12" fontFamily="Times New Roman"/>
        
    </mx:Panel>
</mx:Application>

效果如下:

代码下载:http://yexin218.javaeye.com/blog/203032

阅读(730) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~