Question

Ok, ci-dessous est un exemple simplifié de ce que je dois faire.

Jusqu'ici tout va bien, fonctionne A1. Les ID sont remplacés par le nom de l'ami et la colonne est triable.

Maintenant, je dois l'appliquer à un système contenant des milliers d'identiques et des milliers de lignes.

Je l'ai essayé et wooooooooooo, il est si lent, impossible de livrer quelque chose comme ça à un client ...

Quelle serait, à votre avis, la meilleure approche pour atteindre le même objectif?

La seule idée que j'ai eu est au lieu de ne stocker que l'identifiant de la base de données, pour stocker les noms comme des chaînes aussi ... Je suis juste ce que ce sont des informations que je ne devrais pas avoir à stocker ...

Quelqu'un a une idée? Une autre façon de trier la corde rendue au lieu de devoir rappeler le Fid.Labelfunction (OBJ1, FID) sur chaque ligne?

MERCI BEAUCOUP!

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

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top