为Flex 2 DataGrid加上行号

       英文原文:http://www.cflex.net/showfiledetails.cfm?ChannelID=1&Object=File&objectID=735

    有些时候,我们需要在DataGrid控件中显示当前行的行号,如果DataGrid的数据库源(dataProvider)是一个Collection的话,这个问题就好处理了,只需要在DataGrid中增加一虚拟计算列,通过自定义该列的labelFunction,并在该Function调用getItemIndex中计算当前行的index并加上1就再以字符返回就可以了,注意:这些行号是动态生成的,总是按一定的顺序,并且与其他列的排序没有关系,如果你想让行号随着行的变化而变化的话(通常是对某一列进行排序时),那么你就需要为所有行重新分配行号,这需要在dataProvider中自己用程序来控制,示例代码如下:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
    creationComplete="initApp()">
<mx:Script><![CDATA[
  import mx.collections.ArrayCollection;
  import mx.controls.Alert;
 
  [Bindable]private var _acDP:ArrayCollection;
 
 public function initApp():void
 {
   var oItem:Object;
   _acDP = new ArrayCollection();
   oItem = {Album:"The Lost Chord", Artist:"The Moody Blues", Price:"15.99" };
   _acDP.addItem(oItem);
   oItem = {Album:"Meddle", Artist:"Pink Floyd", Price:"17.99" };
   _acDP.addItem(oItem);
   oItem = {Album:"Trespass", Artist:"Genesis", Price:"18.99" };
   _acDP.addItem(oItem); 
 
 }//initApp

  private function lfRowNum(oItem:Object,iCol:int):String
  {
    var iIndex:int = _acDP.getItemIndex(oItem) + 1;
    return String(iIndex);
  }
 
]]></mx:Script>

<mx:VBox>
 <mx:DataGrid id="dgSource" dataProvider="{_acDP}"
     editable="true" >
    <mx:columns>
      <mx:Array>
        <mx:DataGridColumn headerText="Row#" labelFunction="lfRowNum"  />
        <mx:DataGridColumn headerText="Album" dataField="Album"  />
        <mx:DataGridColumn headerText="Artist" dataField="Artist" />
        <mx:DataGridColumn headerText="Price" dataField="Price" />
       </mx:Array>
    </mx:columns>
  </mx:DataGrid>
</mx:VBox>
</mx:Application>

 

null
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值