您的位置:首页 > 其它

为Flex 2 DataGrid加上行号

2007-10-10 20:58 169 查看
英文原文: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: