how to generate serial number using labelFunction in datagrid?

1.6k Views Asked by At

how to generate serial number using labelFunction in datagrid?

4

There are 4 best solutions below

0
On BEST ANSWER

What do mean by generating serial number? Based on what?

Edit:

<fx:Script>

private function myLabelFunc(item:Object, col:AdvancedDataGridColumn):String
{
var itemIndex:int = dataprovider.getItemIndex(item);
return itemIndex.toString();
}

<mxml>
<mx:AdvancedDataGridColumn headerText="Serial No." labelFunction="myLabelFunc"/>
0
On

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

0
On

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
On

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"/>