Как создать серийный номер, используя labelFunction в datagrid? - PullRequest
0 голосов
/ 04 мая 2011

как создать серийный номер, используя labelFunction в сетке данных?

Ответы [ 4 ]

1 голос
/ 04 мая 2011

Вы можете попробовать что-то вроде следующего:

<?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>
1 голос
/ 04 мая 2011

Что означает генерация серийного номера?На основании чего?

Редактировать:

<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 голосов
/ 04 мая 2011

Сортировка не работает, потому что в этом столбце действительно нет данных.Таким образом, классы сортировки 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"/>
0 голосов
/ 04 мая 2011

Мое предложение указывает текущую позицию элемента в провайдере данных.Вы также можете добавить itemIndex ++ для запуска sn.начать с одного.

...