`
windmark
  • 浏览: 32153 次
社区版块
存档分类
最新评论

Flex中的DataGrid的内容处理(总结)

    博客分类:
  • Flex
 
阅读更多

1.介绍一下DataGrid中数据的增加/删除/获取。

添加/删除
由于DataGrid的数据都绑定于Array或XML,所以我们需要增加记当或删除记录的时候..只需要对所绑定的数据进行相应的操作即可。这里就不多说了..一会直接看代码。
要提示一下的是..虽然数据与DataGrid进行的绑定.不过好像修改了数据源不会立刻更新..需要DataGrid对数据源进行一次反向操作(就在是 DataGrid下进行编辑,下一节会介绍),才会进行更新,所以如果希望立刻更新的话..我们可以再指行一次数据指定..
DataGrid.dataProvider = 数据源

获取
这里所说的获取..是当我们对DataGrid进行的操作(点击项目)的时候..进行所点击的位置索引与数据的获取.
(如果要获取指定第几行,每几列的数据,这样对数据源进行操作即可)

当我们侦听itemClick事件的时候..将会接收到一个ListEvent事件对象..对象里分别有所点击单元格的列索引与列索引,我们就从这两个数据进行其它数据的获取..
(ps:下边提到的e为ListEvent事件对象..)
1.所点击的列的表头
(e.target as DataGrid).columns[e.columnIndex].headerText
2.点击的列索引
e.columnIndex
3.点击的行索引
e.rowIndex
4.点击的整行的数据(选中的数据)
(e.target as DataGrid).selectedItem
5.选中的单元格的数据
(e.target as DataGrid).selectedItem[(e.target as DataGrid).columns[e.columnIndex].dataField]
完整代码:

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="450" fontFamily="宋体" fontSize="12" height="400">
<mx:Script>
<![CDATA[
import mx.controls.*;
import mx.events.ListEvent;
import mx.controls.dataGridClasses.*;
private var DataGrid1:DataGrid;

[Bindable]//原始数据
public var dataArr:Array = [{id:1,name:"苹果",count:100},
{id:2,name:"西瓜",count:200},
{id:3,name:"水蜜桃",count:50}]

private function addItem():void{
        dataArr.push({id:uiId.value,name:uiName.text,count:uiCount.value})
        DataGrid2.dataProvider = dataArr
}
private function delItem():void{
        dataArr.pop();
        DataGrid2.dataProvider = dataArr
}
private function itemClick(e:ListEvent):void {
Alert.show(DataGrid2.columns[0].headerText);
   var txt:String = "表头为: "+(e.target as DataGrid).columns[e.columnIndex].headerText+"\n"
   txt+="选中第 "+e.columnIndex+" 列\n"
   txt+="选中第 "+e.rowIndex+" 行\n"
   txt+="选中的行的数据为:\n"
   var dat:Object = (e.target as DataGrid).selectedItem
   for(var i:* in dat){
     txt+=" "+i+":"+dat[i]+"\n"
   }
   txt+="选中的单元可格的数据为 "+(e.target as DataGrid).selectedItem[(e.target as DataGrid).columns[e.columnIndex].dataField]+" \n"
   Alert.show(txt)
   }
]]>
</mx:Script>

<mx:DataGrid id="DataGrid2" itemClick="itemClick(event)" dataProvider="{dataArr}" width="430" y="10" x="10" height="208">
<mx:columns>
<mx:DataGridColumn headerText="序号" dataField="id"/>
<mx:DataGridColumn headerText="名称" dataField="name"/>
<mx:DataGridColumn headerText="数量" dataField="count" editorDataField="value"/>
</mx:columns>
</mx:DataGrid>
<mx:NumericStepper id="uiId" x="10" y="241" width="150"/>
<mx:TextInput id="uiName" x="10" y="288" width="150"/>
<mx:NumericStepper id="uiCount" x="10" y="335" width="150"/>
<mx:Label x="10" y="224" text="序号:"/>
<mx:Label x="10" y="271" text="名称:"/>
<mx:Label x="10" y="318" text="数量:"/>
<mx:Button click="addItem()" x="10" y="368" label="添加" width="150"/>
<mx:Button click="delItem()" x="290" y="368" label="删除最后一个" width="150"/>
</mx:Application>

 

2.Datagrid数据的移动moveData.mxml

 

<?xml version="1.0" encoding="utf-8"?>   
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:window="com.diaztorres.window.*" xmlns:log="com.log.*">   
<mx:Script>   
    <![CDATA[   
       import mx.collections.IList;     
       import mx.collections.ArrayCollection   
       import mx.controls.Alert;         
       public function moveUp(event : MouseEvent) : void  
        {                    
           var i : int = peopleList.selectedIndex;
            
          if (i >= 1&&peopleList.selectedItem)   
           {                
          
             IList(peopleList.dataProvider).addItemAt(peopleList.selectedItem,i-1);
              //Alert.show(peopleList.selectedIndex.toString());                     
             IList(peopleList.dataProvider).removeItemAt(i+1);   
             peopleList.selectedIndex = i;   
                         //Alert.show(i.toString());
            }   
        }   
           
       public function moveDown(event : MouseEvent) : void  
        {   
        var i : int = peopleList.selectedIndex;         
       if (i < (ArrayCollection(peopleList.dataProvider).length - 1) && peopleList.selectedItem)   
        {                
           IList(peopleList.dataProvider).addItemAt(peopleList.selectedItem,i + 2);                     
                IList(peopleList.dataProvider).removeItemAt(i);      
                peopleList.selectedIndex = i;                }               
        }                       
         ]]>   
     </mx:Script> 
      <mx:Array id="arrDP">
        <mx:Object c="1" c1="One" />
        <mx:Object c="2" c1="One" />
        <mx:Object c="3" c1="One" />
</mx:Array>  
     <mx:VBox horizontalAlign="center" x="618" y="176" height="264">      
     <mx:DataGrid id="peopleList"  dataProvider="{arrDP}"  x="198" y="66" width="302">   
          
     </mx:DataGrid>   
     <mx:ControlBar width="298" horizontalAlign="right" height="26">   
         <mx:Button label="上移" click="moveUp(event)"/>   
         <mx:Button label="下移" click="moveDown(event)"/>   
     </mx:ControlBar>       
</mx:VBox>   
</mx:Application>

 

3.DataGrid的数据更换感应

<?xml version="1.0" encoding="utf-8"?>
<mx:Application name="DataGrid_maxVerticalScrollPosition_text"
        xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white"
        creationComplete="init();">
 
    <mx:Script>
        <![CDATA[
            import mx.events.CollectionEvent;
            private var timer:Timer;
 
            private function init():void {
                timer = new Timer(500);
                timer.addEventListener(TimerEvent.TIMER, onTimer);
                timer.start();
            }
 
            private function onTimer(evt:TimerEvent):void {
                var now:String = new Date().toTimeString();
                arrColl.addItem({id:timer.currentCount, time:now});
            }
 
            private function arrColl_collectionChange(evt:CollectionEvent):void {
                callLater(autoScrollDataGrid);
            }
 
            private function autoScrollDataGrid():void {
                if (dataGrid) {
                    dataGrid.validateNow();

//validateNow () 方法  
                    //验证并更新此对象的属性和布局,
                    //如果需要的话重绘对象。
                    //通常只有当脚本执行完毕后,
                    //才会处理要求进行大量计算的处理属性。
                    //例如,对 width 属性的设置可能会延迟,
                    //因为此设置需要重新计算这些对象的子项或父项的宽度。
                    //如果脚本多次设置了 width 属性,则延迟处理可防止进行多次处理。此方法允许您手动覆盖此行为。
                    dataGrid.verticalScrollPosition=dataGrid.maxVerticalScrollPosition;//滚动条

                }
            }
        ]]>
    </mx:Script>   
    <mx:ArrayCollection id="arrColl"
            collectionChange="arrColl_collectionChange(event);" />   
    <mx:DataGrid id="dataGrid"
            dataProvider="{arrColl}"
            verticalScrollPolicy="on"
            width="200"
            rowCount="8">
        <mx:columns>
            <mx:DataGridColumn dataField="id" width="50" />
            <mx:DataGridColumn dataField="time" />
        </mx:columns>
    </mx:DataGrid> 
</mx:Application>

分享到:
评论

相关推荐

    Flex中组件datagrid导出Excel

    总结起来,Flex中组件DataGrid的数据导出至Excel是一项涉及组件操作、数据处理、XML序列化和文件下载等多方面技术的任务。通过理解并掌握这些知识点,开发者可以为用户提供便捷的数据导出功能,提高用户体验。在具体...

    Flex4之DataGrid四个的示例【客户端和服务器端】

    博文链接中提到的内容可能包含了一个或多个实例,展示了如何在Flex4中创建和使用DataGrid,同时处理客户端和服务器端的数据。可能包括了如何设置DataGrid的列、数据绑定、事件监听以及与服务器的交互流程。 6. **...

    Flex DataGrid从XML文件中加载数据

    在Flex编程中,`Flex DataGrid` 是一个用于展示数据集的组件,它允许用户以表格形式查看和操作数据。本示例展示了如何从XML文件加载数据并将其显示在Flex DataGrid中。以下是对该话题的详细解释: 1. **XML数据源**...

    flex datagrid 嵌套checkbox实现全选

    在Flex开发中,数据网格...总结,这个Flex3示例展示了如何在DataGrid中嵌套复选框并实现全选功能,这对于构建交互式的数据管理界面至关重要。通过学习和实践,开发者可以创建更灵活、用户友好的数据操作界面。

    Flex中DataGrid和其它控件使用

    总结来说,Flex中的DataGrid和AdvancedDataGrid是强大且灵活的数据展示工具,它们可以与其他多种控件协同工作,满足各种复杂的数据展示和交互需求。理解和掌握这些知识点,将有助于构建高效、用户友好的Flex应用程序...

    在Flex的DataGrid中使用CheckBox

    ### 在Flex的DataGrid中使用CheckBox #### 一、引言 在Flex应用程序开发中,DataGrid 是一种常用的UI组件,用于展示数据列表,并提供了一系列的功能,如排序、过滤等。有时,为了增加用户交互性或实现特定功能,...

    flex组件之DataGrid高级用法实例源码

    在Flex编程领域,DataGrid组件是开发者们常用的数据展示工具,尤其在处理大量结构化数据时,它能提供高效、可定制化的展示效果。本文将深入探讨Flex DataGrid的高级用法,通过实例源码来解析其核心特性,帮助开发者...

    Flex的DataGrid导出Excel

    总结来说,“Flex的DataGrid导出Excel”涉及的技术主要包括Flex客户端的数据获取和传输、服务器端的Excel文件生成以及客户端的文件下载处理。这个过程利用了Flex与服务器之间的通信,以及服务器端的库来实现Excel...

    flex DataGrid中文字符排序类

    `SortUtil`类为解决Flex DataGrid中的中文字符排序问题提供了一种实用的方法。通过对关键常量和`CHAR_LIB`数组的理解与运用,开发者可以轻松地为自己的项目添加强大的中文排序功能。此外,通过参考提供的链接(...

    flex DataGrid设置dataProvider

    在本文中,我们将深入探讨如何在Flex中设置`DataGrid`的数据提供者(`dataProvider`),以便动态地填充数据。`DataGrid`是Adobe Flex中一个非常重要的组件,它用于显示和操作网格形式的数据。理解如何有效地设置数据...

    flex datagrid doubleclick 实例

    总结来说,本实例涉及了Flex DataGrid的双击事件处理,通过监听`doubleClick`事件,获取选中行的数据,并根据这些数据执行特定的操作。同时,压缩包中的文件可能提供了客户端和服务器端的实现细节,供开发者参考和...

    flex Datagrid checkbox全选

    总结起来,实现Flex Datagrid checkbox全选功能主要涉及自定义数据列、表头渲染器和行渲染器,通过事件监听和状态同步来达到全选的效果。在实际应用中,可能还需要处理部分选中、反选等复杂逻辑,但上述步骤提供了一...

    flex4 dataGrid 日期格式转换

    总结起来,Flex 4中的`DataGrid`通过结合`DateFormatter`和自定义的`labelFunction`可以方便地实现日期格式的转换,使数据显示更加人性化。理解并熟练运用这些技巧,可以提升用户体验,增强应用程序的易用性。

    flex datagrid 中实现combobox联动

    总结,Flex中实现DataGrid内ComboBox的联动需要掌握事件监听、数据绑定、自定义组件等技术。通过以上步骤,我们可以创建出交互性强、用户体验良好的数据输入界面。在实际开发中,还需要考虑到性能优化,避免不必要的...

    Flex DataGrid 插入子组件

    总结,通过在Flex DataGrid中插入子组件,我们可以实现更加灵活和交互丰富的数据展示。无论是简单的按钮,还是复杂的自定义组件,都可以根据需求定制,以满足不同场景下的应用需求。在实际开发中,务必注意性能优化...

    flex基于datagrid控件的增删改查及分页实现

    总结,Flex基于DataGrid控件的增删改查及分页实现涉及了数据绑定、事件处理、用户交互设计等多个方面,通过合理利用Flex提供的API和组件,可以构建出高效、用户友好的数据管理界面。在实际开发中,还需要考虑性能...

Global site tag (gtag.js) - Google Analytics