Pregunta

Ok, a continuación hay un ejemplo simplificado de lo que tengo que hacer.

Hasta ahora todo bien, funciona a1. Las ID son reemplazadas por el nombre del amigo, y la columna es ordenable.

Ahora, tengo que aplicar esto a un sistema que contiene miles de identificaciones y miles de filas.

Lo probé y wooooooooooo, es muy lento, imposible entregar algo como esto a un cliente ...

¿Cuál sería, en su opinión, el mejor enfoque para lograr el mismo objetivo?

La única idea que tenía es en lugar de almacenar solo la identificación en el DB, almacenar los nombres como cadenas también ... Solo es una información que no debería tener que almacenar ...

¿Alguien tiene una idea? Otra forma de ordenar la cadena renderizada en lugar de tener que recordar el fid.labelfunction (obj1, fid) en cada fila?

¡MUCHAS GRACIAS!

<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:s="library://ns.adobe.com/flex/spark" 
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;
        import mx.events.FlexEvent;

        [Bindable]
        private var _friendList:ArrayCollection = new ArrayCollection([
            {friend_id : 1},
            {friend_id : 3},
            {friend_id : 2},
            {friend_id : 2},
            {friend_id : 1},
            {friend_id : 2},
            {friend_id : 1},
            {friend_id : 3}
        ]);

        private function friendNameFromID(item:Object, column:DataGridColumn):String
        {
            var id:int = item[column.dataField];

            if (id == 1)
                return "Thomas";

            if (id == 2)
                return "Anthony";

            if (id == 3)
                return "George"

            return "";
        }

        private function sortFromFriendName(obj1:Object, obj2:Object):int
        {
            var value1:String = fId.labelFunction(obj1, fId);
            var value2:String = fId.labelFunction(obj2, fId);

            if (value1 == value2)
                return 0;
            else if (value1 > value2)
                return 1;
            else
                return -1;
        }

    ]]>
</fx:Script>

<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<mx:DataGrid id="myDataGrid" dataProvider="{_friendList}" width="90%" height="90%" horizontalCenter="0" verticalCenter="0">
    <mx:columns>
        <mx:DataGridColumn dataField="friend_id"/>
        <mx:DataGridColumn id="fId" dataField="friend_id" labelFunction="friendNameFromID" sortCompareFunction="sortFromFriendName"/>
    </mx:columns>
</mx:DataGrid>

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top