FLEX实践—Datagrid保存列模板及自动显示行号

来源:互联网 发布:电子电路仿真软件 编辑:程序博客网 时间:2024/04/29 06:22

运行效果就不截图了,有兴趣的朋友自己可以试一下。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="
http://www.adobe.com/2006/mxml" layout="absolute" fontSize="12">
 <mx:Script>
  <![CDATA[
   import mx.collections.ArrayCollection;
   import mx.controls.Alert;
 //自动获取行号
 private function lfRowNum(oItem:Object,iCol:int):String
  {
    var iIndex:int = dg.getItemIndex(oItem) + 1;
    return String(iIndex);
  }
 //创建datagrid列模板
  var columnTemplate:ArrayCollection=new ArrayCollection();
 //当手动改变datagrid列的排列顺序时,可将其保存
  private function saveTemplate():void{
   var temp:Object=new Object();
   temp['name']=templateName.text;
   temp['columns']=grid.columns;
   columnTemplate.addItem(temp);
   Alert.show("Save template: "+temp['name']);
  }
  //如果已经保存了多个不同的排序模板,可通过下拉列表来改变datagrid的显示
  private function changeTemplate():void{
   
   grid.columns = columnTemplate[comboBox.selectedIndex]['columns'];
  }
  ]]>
 </mx:Script>
 <mx:ArrayCollection id="dg">
  <mx:Object name="A" code="A1" des="A2" enabled="true"/>
  <mx:Object name="B" code="B1" des="B2" enabled="false"/>
  <mx:Object name="A" code="C1" des="C2" enabled="true"/>
 </mx:ArrayCollection>
 <mx:DataGrid id="grid" dataProvider="{dg}"
     x="393" y="140">
    <mx:columns>
        <mx:DataGridColumn headerText="Row number" labelFunction="lfRowNum"  />
        <mx:DataGridColumn headerText="Name" dataField="name"  />
        <mx:DataGridColumn headerText="Code" dataField="code" />
        <mx:DataGridColumn headerText="Description" dataField="des" />
    </mx:columns>
  </mx:DataGrid>
  <mx:Button x="679" y="336" label="Save Template" width="141" id="aa1" click="saveTemplate()"/>
 <mx:ComboBox x="393" y="63" dataProvider="{columnTemplate}" labelField="name" id="comboBox"
           change="changeTemplate()" prompt="请选择模板">
 </mx:ComboBox>
 <mx:TextInput x="471" y="336" id="templateName"/>
 <mx:Label x="393" y="338" text="模板名称:" fontWeight="bold"/>
</mx:Application>

原创粉丝点击