zoukankan      html  css  js  c++  java
  • DataGrid使用 for Flex

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="OnLoad()">
        
    <mx:Style>
            Application 
            
    {
                font
    -size:12px;
            }

            ToolTip
            
    {
                font
    -size:12px;
            }

            ErrorString
            
    {
                font
    -size:12px;
            }

        
    </mx:Style>
        
    <mx:Script>
            
    <![CDATA[
                
    import comm.*
                
    import mx.collections.ArrayCollection;
                
    import mx.events.DataGridEvent;  
                
    import mx.controls.Alert;
                
    import mx.managers.CursorManager;
                 
                [Bindable]   
                
    private var carArray : ArrayCollection = new ArrayCollection(); 
                
                
    private function OnLoad():void
                
    {
                    var car : CarVO 
    = new CarVO();   
                    car.Name 
    = "Ford";                   
                    car.Available 
    = false;   
                    carArray.addItem(car);   
                       
                    car 
    = new CarVO();   
                    car.Name 
    = "Benz";   
                    car.Available 
    = true;   
                    carArray.addItem(car);   
                       
                    car 
    = new CarVO();   
                    car.Name 
    = "BMW";   
                    car.Available 
    = true;   
                    carArray.addItem(car);
                    
                    car 
    = new CarVO();   
                    car.Name 
    = "BMW";   
                    car.Available 
    = true;   
                    carArray.addItem(car);
                    
                    car 
    = new CarVO();   
                    car.Name 
    = "BMW";   
                    car.Available 
    = true;   
                    carArray.addItem(car);
                    
                    car 
    = new CarVO();   
                    car.Name 
    = "BMW";   
                    car.Available 
    = true;   
                    carArray.addItem(car);
                    
                    car 
    = new CarVO();   
                    car.Name 
    = "BMW";   
                    car.Available 
    = true;   
                    carArray.addItem(car);
                }

                [Bindable]
                
    private var employees:XML = 
                  
    <object>        
                    
    <employee>
                        
    <name>Christina Coenraets</name>
                        
    <phone>555-219-2270</phone>
                        
    <email>ccoenraets@fictitious.com</email>
                        
    <active>false</active>
                    
    </employee>
                    
    <employee>
                        
    <name>Joanne Wall</name>
                        
    <phone>555-219-2012</phone>
                        
    <email>jwall@fictitious.com</email>
                        
    <active>true</active>
                    
    </employee>
                    
    <employee>
                        
    <name>Maurice Smith</name>
                        
    <phone>555-219-2012</phone>
                        
    <email>maurice@fictitious.com</email>
                        
    <active>false</active>
                    
    </employee>
                    
    <employee>
                        
    <name>Mary Jones</name>
                        
    <phone>555-219-2000</phone>
                        
    <email>mjones@fictitious.com</email>
                        
    <active>false</active>
                    
    </employee>
                    
    <employee>
                        
    <name>Maurice Smith</name>
                        
    <phone>555-219-2012</phone>
                        
    <email>maurice@fictitious.com</email>
                        
    <active>false</active>
                    
    </employee>
                    
    <employee>
                        
    <name>Mary Jones</name>
                        
    <phone>555-219-2000</phone>
                        
    <email>mjones@fictitious.com</email>
                        
    <active>false</active>
                    
    </employee>
                          
    <employee>
                        
    <name>Maurice Smith</name>
                        
    <phone>555-219-2012</phone>
                        
    <email>maurice@fictitious.com</email>
                        
    <active>false</active>
                    
    </employee>
                    
    <employee>
                        
    <name>Mary Jones</name>
                        
    <phone>555-219-2000</phone>
                        
    <email>mjones@fictitious.com</email>
                        
    <active>false</active>
                    
    </employee>
                          
    <employee>
                        
    <name>Maurice Smith</name>
                        
    <phone>555-219-2012</phone>
                        
    <email>maurice@fictitious.com</email>
                        
    <active>false</active>
                    
    </employee>
                    
    <employee>
                        
    <name>Mary Jones</name>
                        
    <phone>555-219-2000</phone>
                        
    <email>mjones@fictitious.com</email>
                        
    <active>false</active>
                    
    </employee>
                     
    <employee>
                        
    <name>Maurice Smith</name>
                        
    <phone>555-219-2012</phone>
                        
    <email>maurice@fictitious.com</email>
                        
    <active>false</active>
                    
    </employee>
                    
    <employee>
                        
    <name>Mary Jones</name>
                        
    <phone>555-219-2000</phone>
                        
    <email>mjones@fictitious.com</email>
                        
    <active>true</active>
                    
    </employee>
                
    </object>
                
    private function Button_Click(e:Event):void
                
    {
                    
    if(myTxt.text == "")
                        myTxt.errorString
    ="This Value is not NUll";
                    
    else
                        myTxt.errorString 
    = null;
                }

                
    //用户准备好编辑项目以后调度;例如,当鼠标在项目上时,用户释放鼠标按键就会指示这种情况。
                private function OnDataGridEdit_Begining(event:DataGridEvent):void
                
    {
                        
    //设置第0列不允许编辑
                        if(event.columnIndex == 0)
                            event.preventDefault(); 
                        
    if(event.columnIndex == 3)
                            event.preventDefault();
                }

                
                
    //在DataGrid中的点CheckBox执行的事件,将修改DataGrid.provider的数据.
                public function checkBox_click(event:MouseEvent):void
                
    {
                    var car:CarVO 
    = CarVO(carArray.getItemAt(gvw.selectedIndex));
                    
    if(car.Available == true)
                        car.Available 
    = false;
                    
    else
                        car.Available 
    = true;
                    gvw.dataProvider 
    = carArray;
                    
                }

                
    //执行DataGrid中的删除选中行.
                public function btnDelete_Click(event:Event):void
                
    {            
                    var car:CarVO 
    = CarVO(carArray.getItemAt(gvw.selectedIndex));
                    Alert.show(car.Name);    
                }

                
    //编辑一项.
                private function gvw_OnEdit_End(e:DataGridEvent):void
                
    {
                    CursorManager.setBusyCursor();
                    var dg:DataGrid 
    = e.currentTarget as DataGrid;
                    var myEditor:TextInput 
    = TextInput(dg.itemEditorInstance);
                    var newVal:String 
    = myEditor.text;
                    var oldVal:String 
    = dg.editedItemRenderer.data[e.dataField].toString();
                    cellInfo.text 
    = "Cell edited.\n";
                    cellInfo.text 
    += "Row,column:"+e.rowIndex+","+e.columnIndex+"\n";
                    cellInfo.text 
    += "new value :"+newVal+"\n";
                    cellInfo.text 
    += "Old value :"+oldVal;
                    CursorManager.removeBusyCursor();
                }

                    
                
            ]]
    >
        
    </mx:Script>
        
    <mx:transitions>
            
    <mx:Transition  fromState="*" toState="*">
                
    <mx:Sequence targets="{[panel1,panel2,panel3]}">
                    
    <mx:Move duration="200"/>
                    
    <!--<mx:Rotate angleFrom="180" angleTo="360" /> -->
                    
    <mx:Resize duration="200" />
                
    </mx:Sequence>
            
    </mx:Transition>
        
    </mx:transitions>    
        
    <mx:states>
            
    <mx:State name="s1">
                
    <mx:SetProperty target="{panel1}" name="x" value="5"/>
                
    <mx:SetProperty target="{panel1}" name="y" value="60"/>    
                
    <mx:SetProperty target="{panel1}" name="height" value="{hs.value}"/>
                
    <mx:SetProperty target="{panel1}" name="width" value="{vs.value}"/>            
                
    <mx:SetProperty target="{panel2}" name="x" value="135"/>
                
    <mx:SetProperty target="{panel2}" name="y" value="10"/>    
                
    <mx:SetProperty target="{panel2}" name="height" value="30"/>
                
    <mx:SetProperty target="{panel2}" name="width" value="125"/>            
                
    <mx:SetProperty target="{panel3}" name="x" value="270"/>
                
    <mx:SetProperty target="{panel3}" name="y" value="10"/>    
                
    <mx:SetProperty target="{panel3}" name="height" value="30"/>
                
    <mx:SetProperty target="{panel3}" name="width" value="125"/>                                
            
    </mx:State>        
            
    <mx:State name="s2">
                
    <mx:SetProperty target="{panel1}" name="x" value="5"/>
                
    <mx:SetProperty target="{panel1}" name="y" value="10"/>    
                
    <mx:SetProperty target="{panel1}" name="height" value="30"/>
                
    <mx:SetProperty target="{panel1}" name="width" value="125"/>            
                
    <mx:SetProperty target="{panel2}" name="x" value="5"/>
                
    <mx:SetProperty target="{panel2}" name="y" value="60"/>    
                
    <mx:SetProperty target="{panel2}" name="height" value="{hs.value}"/>
                
    <mx:SetProperty target="{panel2}" name="width" value="{vs.value}"/>            
                
    <mx:SetProperty target="{panel3}" name="x" value="270"/>
                
    <mx:SetProperty target="{panel3}" name="y" value="10"/>    
                
    <mx:SetProperty target="{panel3}" name="height" value="30"/>
                
    <mx:SetProperty target="{panel3}" name="width" value="125"/>                            
            
    </mx:State>
            
    <mx:State name="s3">
                
    <mx:SetProperty target="{panel1}" name="x" value="5"/>
                
    <mx:SetProperty target="{panel1}" name="y" value="10"/>    
                
    <mx:SetProperty target="{panel1}" name="height" value="30"/>
                
    <mx:SetProperty target="{panel1}" name="width" value="125"/>                            
                
    <mx:SetProperty target="{panel2}" name="x" value="135"/>
                
    <mx:SetProperty target="{panel2}" name="y" value="10"/>    
                
    <mx:SetProperty target="{panel2}" name="height" value="30"/>
                
    <mx:SetProperty target="{panel2}" name="width" value="125"/>            
                
    <mx:SetProperty target="{panel3}" name="x" value="5"/>
                
    <mx:SetProperty target="{panel3}" name="y" value="60"/>    
                
    <mx:SetProperty target="{panel3}" name="height" value="{hs.value}"/>
                
    <mx:SetProperty target="{panel3}" name="width" value="{vs.value}"/>            
            
    </mx:State>
        
    </mx:states>

        
    <mx:Panel x="5" y="60" width="{vs.value}" height="{hs.value}" layout="absolute" title="Panel 1" id="panel1" click="this.currentState='s1'">
    <!--
    DataGridEvent.HEADER_RELEASE:用户在列标题上按下并释放鼠标以后调度。 
    DataGridEvent.ITEM_EDIT_BEGIN:准备编辑项目时调度。 
    DataGridEvent.ITEM_EDIT_BEGINNING:用户准备好编辑项目以后调度;例如,当鼠标在项目上时,用户释放鼠标按键就会指示这种情况。 
    DataGridEvent.ITEM_EDIT_END:编辑会话结束时调度。 
    DataGridEvent.ITEM_FOCUS_IN:在项目获得焦点以后调度。 
    DataGridEvent.ITEM_FOCUS_OUT:在项目失去焦点以后调度。
     
    -->
            
    <mx:DataGrid left="10" right="10" top="10" bottom="85" dataProvider="{carArray}" editable="true" 
                itemEditBegin
    ="OnDataGridEdit_Begining(event)" id="gvw" itemEditEnd="gvw_OnEdit_End(event)">
                
    <mx:columns>
                    
    <mx:DataGridColumn headerText="Column 1" dataField="Available" >
                        
    <mx:itemRenderer>
                            
    <mx:Component>
                            
    <!-- 在Mx:Component中要使用outerDocument发部事件.如 click="outerDocument.checkBox_click(event)"-->
                                
    <mx:CheckBox label="{data.Name}" selected="{data.Available}" click="outerDocument.checkBox_click(event)"/>
                            
    </mx:Component>
                        
    </mx:itemRenderer>
                    
    </mx:DataGridColumn>
                    
    <mx:DataGridColumn headerText="名称" dataField="Name"/>
                    
    <mx:DataGridColumn headerText="电话" dataField="Available"/>
                    
    <mx:DataGridColumn headerText="操作" dataField="Name">
                        
    <mx:itemRenderer>
                            
    <mx:Component>
                                
    <mx:LinkButton label="删除" click="outerDocument.btnDelete_Click(event)">
                                
    </mx:LinkButton>
                            
    </mx:Component>
                        
    </mx:itemRenderer>    
                    
    </mx:DataGridColumn>
                
    </mx:columns>
            
    </mx:DataGrid>
            
    <mx:TextArea left="10" right="10" bottom="10" height="70" id="cellInfo"/>
        
    </mx:Panel>
        
    <mx:Panel x="135" y="10" width="317" height="162" layout="absolute" title="Panel 2" id="panel2" click="this.currentState='s2'">        
                
    <mx:TextInput id="myTxt" x="10" y="31" />
                
    <mx:Button label="Button" x="178" y="32" click="Button_Click(event)" toolTip="提交"/>        
        
    </mx:Panel>
        
    <mx:Panel x="270" y="10" width="125" height="30" layout="absolute" title="Panel 3" id="panel3" click="this.currentState='s3'">
        
    </mx:Panel>
        
    <mx:Button label="Reset" click="this.currentState=''" bottom="10" horizontalCenter="0"/>
        
    <mx:VSlider value="0" maximum="600" minimum="300" tickInterval="10" id="hs" right="5" top="10" bottom="55"/>
        
    <mx:HSlider value="0" maximum="1024" minimum="390" tickValues="10" id="vs" bottom="31" right="10" left="10"/>
    </mx:Application>

    注意:
        在DataGrid中的CheckBox列用到了data.Available这种邦定方式.如果把DataGrid的邦定换成是直接的XML对象邦定那么在Data.Available邦定时会出现 warning: unable to bind to property 'Available' on class 'XML' (class is not an IEventDispatcher) 原因是在XML对象内属性Available没有声名[Bindable] 的原因,这样会出现不可预料的结果.如果把他定义用Class 对象在用时使用[Bindable] 关键字问题解决.
  • 相关阅读:
    luogu P3801 红色的幻想乡
    [USACO07OPEN]吃饭Dining
    [SCOI2007]蜥蜴
    [SDOI2011]染色
    [USACO07DEC]Sightseeing Cows
    [HNOI2007]紧急疏散EVACUATE
    [ZJOI2009]假期的宿舍
    [SDOI2013]费用流
    [CQOI2009]跳舞
    使用chrony安装chrony
  • 原文地址:https://www.cnblogs.com/wubiyu/p/1244069.html
Copyright © 2011-2022 走看看