Pregunta

¿Cómo generar un número de serie usando labelFunction en datagrid?

¿Fue útil?

Solución

¿Qué significa generar un número de serie?¿Basado en qué?

Editar:

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

Otros consejos

Puede probar algo como lo siguiente:

<?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>

Mi sugerencia proporciona la posición actual del elemento en el proveedor de datos de cuadrículas de datos.También puede agregar itemIndex ++ para iniciar su sn.empezar desde uno.

La clasificación no funciona porque realmente no hay datos en esa columna.Entonces, las clases de clasificación de Datagrid no pueden hacer el truco basándose en nada.Necesita escribir su propia función de clasificación.

Utilice la función sortCompareFunction de cuadrícula de datos:

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"/>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top