문제

how to generate serial number using labelFunction in datagrid?

도움이 되었습니까?

해결책

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

다른 팁

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>

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

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"/>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top