how to generate serial number using labelFunction in datagrid?
how to generate serial number using labelFunction in datagrid?
1.6k Views Asked by Hari kanna At
4
There are 4 best solutions below
0

My suggestion provides item current position in datagrids dataprovider. You can also add itemIndex++ to start your sn. begin from one.
0

You can try something like the following:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
<![CDATA[
private function serialLabelFunction(item:String, column:DataGridColumn):String
{
var index:int = dataProvider.getItemIndex(item);
if (index > -1)
return (index + 1).toString();
return "";
}
]]>
</fx:Script>
<fx:Declarations>
<s:ArrayCollection id="dataProvider">
<s:source>
<fx:Array>
<fx:String>First</fx:String>
<fx:String>Second</fx:String>
<fx:String>Third</fx:String>
<fx:String>Fourth</fx:String>
<fx:String>Fifth</fx:String>
</fx:Array>
</s:source>
</s:ArrayCollection>
</fx:Declarations>
<mx:DataGrid dataProvider="{dataProvider}" horizontalCenter="0" verticalCenter="0">
<mx:columns>
<mx:DataGridColumn headerText="Serial" labelFunction="serialLabelFunction" />
<mx:DataGridColumn headerText="Data" />
</mx:columns>
</mx:DataGrid>
</s:Application>
0

Sorting does not work because there is really no data on that column. So Datagrid sorting classes cant do the trick based on nothing. You need to write your own sort function.
Use datagrid sortCompareFunction:
private function sortSerial(item1:Object, item2:Object):int
{
var value1:int = arrayCollectionn.getItemIndex(item1);
var value2:int = arrayCollectionn.getItemIndex(item2);
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
}
mxml
<mx:AdvancedDataGridColumn headerText="Serial No." labelFunction="myLabelFunc" sortCompareFunction="sortSerial"/>
What do mean by generating serial number? Based on what?
Edit: