Domanda

Ok, di seguito è un esempio semplificato di ciò che devo fare.

Fin qui tutto bene, funziona A1. Gli ID sono sostituiti dal nome dell'amico e la colonna è ordinabile.

Ora, devo applicarlo a un sistema contenente migliaia di ID e migliaia di file.

L'ho provato e wooooooooooo, è così lento, impossibile consegnare qualcosa del genere a un cliente ...

Quale sarebbe, secondo te, l'approccio migliore per raggiungere lo stesso obiettivo?

L'unica idea che ho avuto è invece di conservare solo l'ID nel DB, per archiviare anche i nomi come stringhe ... Ho solo cosa che sono informazioni che non dovrei archiviare ...

Qualcuno ha un'idea? Un altro modo per ordinare la stringa resa invece di dover ricordare il FID.Labelfunction (OBJ1, FID) su ogni riga?

MOLTE GRAZIE!

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

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top