Frage

Ich muss auf eine programmatische mehrspaltigen auf Advanced Sortierung. Die Frage ist, zur Zeit ich bin die Umsetzung Paging auf meinem Netz. Also, wenn ich die Daten sortieren, nur die perticular Seite sortiert wird. Also, ich brauche die gesamte Liste der Spalte Kriterien zu sortieren.

habe ich versucht, header Ereignis, aber ich denke, es nützt nichts, als ich eine Rundreise Anruf auf dem Server vornehmen müssen die sortierten Daten zu erhalten. Gibt es eine Möglichkeit, die ich umsetzen kann. Ich brauche auch die Art Marker in den Spaltenüberschriften richtige Position zu zeigen, was auf die Sortiernummern und Richtung.

'll wirklich schätzen die Hilfe

Danke:)

War es hilfreich?

Lösung

Wenn Ihre Daten ausgelagert wird, werden Sie an den Server gehen müssen sowieso die Daten abzurufen. Wenn nur ein Teil der Daten Client-Seite gespeichert ist, könnte es besser sein, einfach irgendwie auf dem Server, da nur der Server alle Daten haben.

Andere Tipps

Sie müssen die Advanced erweitern und außer Kraft setzen, die sortHandler

public var orderBy:String; 
override protected function sortHandler(event:AdvancedDataGridEvent):void {
     super.sortHandler(event); 
     var arry:Array = [];  
     for each(var o:SortField in collection.sort.fields){
         arry.push(o.name+' '+(o.descending?'DESC':'ASC'));     
     }
     orderBy = arry.join(',');
}

Erstellen Sie Ihre eigene Vorausdatagrid, wie im Beispiel unten. Sie haben das Feld von sortierten Spalten und die Reihenfolge. Senden Sie eine cutom Veranstaltung und geben diese Anordnung zu. Die Server-Seite Tech wird die Abfrage entsprechend machen und kehren Sie das Ergebnis aus.

             

        import mx.events.CollectionEvent;
        import mx.binding.utils.BindingUtils;
        import mx.collections.SortField;
        import mx.collections.Sort;
        import mx.collections.ArrayCollection;
        import mx.events.AdvancedDataGridEvent;

        private var sortOrder:Boolean = true;
        [Bindable]
        public var headerHt:int = 30;


        [Inspectable(defaultValue="true", type="Boolean", enumeration="true,false", inherit="yes")]
        [Bindable]
        public var allowHeaderWordWrap:Boolean = true;

        public function sortCaseInsensitive(event:AdvancedDataGridEvent):void{
            var genericDataProvider:Object  = this.dataProvider as Object;
            sortOrder = !sortOrder; 
            //genericDataProvider.sort = new Sort();
            if(genericDataProvider.sort == null){
                genericDataProvider.sort = new Sort();
            } 
            var sortField:SortField = new SortField(event.dataField,true,sortOrder);
            switch (event.dataField) {
                  case "assmtId":
                      sortField.numeric = true;
                break;

            }//switch

            //genericDataProvider.sort.fields = [sortField];
            if(genericDataProvider.sort.fields == null){
                genericDataProvider.sort.fields = [sortField];
            }else{
                //if dataField is not already present in sort fields array 
                if(genericDataProvider.sort.fields.indexOf(sortField) != -1){
                    genericDataProvider.sort.fields = genericDataProvider.sort.fields.concat(sortField);
                }
             }
            genericDataProvider.refresh();

                 // Send custom event to server and pass the array of sort to it the server side technology will make dynamic query and return the result
        }//sortCaseInsensitive

    ]]>
</mx:Script>

Sorry, Jungs !! Verpasste den Anfangsteil des Codes .... Hier ist der richtige Code

<:AdvancedDataGrid headerWordWrap="{allowHeaderWordWrap}"   headerRelease="sortCaseInsensitive(event)" headerHeight="{headerHt}">

    <:Script>
        <[CDATA[
            import mx.events.CollectionEvent;
                import mx.binding.utils.BindingUtils;
                import mx.collections.SortField;
                import mx.collections.Sort;
                import mx.collections.ArrayCollection;
                import mx.events.AdvancedDataGridEvent;

                private var sortOrder:Boolean = true;
                [Bindable]
                public var headerHt:int = 30;


                [Inspectable(defaultValue="true", type="Boolean", enumeration="true,false", inherit="yes")]
                [Bindable]
                public var allowHeaderWordWrap:Boolean = true;

                public function sortCaseInsensitive(event:AdvancedDataGridEvent):void{
                var genericDataProvider:Object  = this.dataProvider as Object;
                        sortOrder = !sortOrder; 
                        //genericDataProvider.sort = new Sort();
                        if(genericDataProvider.sort == null){
                                genericDataProvider.sort = new Sort();
                        } 
                        var sortField:SortField = new SortField(event.dataField,true,sortOrder);
                switch (event.dataField) {
                      case "assmtId":
                      sortField.numeric = true;
                break;

                }//switch

                //genericDataProvider.sort.fields = [sortField];
                if(genericDataProvider.sort.fields == null){
                        genericDataProvider.sort.fields = [sortField];
                }else{
                        //if dataField is not already present in sort fields array 
                        if(genericDataProvider.sort.fields.indexOf(sortField) != -1){
                                genericDataProvider.sort.fields = genericDataProvider.sort.fields.concat(sortField);
                        }
                 }
            genericDataProvider.refresh();

                 // Send custom event to server and pass the array of sort to it the server side technology will make dynamic query and return the result
                }//sortCaseInsensitive

        ]]>
<:Script>
<:AdvancedDataGrid>

Versuchen Sie, die Veranstaltung Priorität der Sortierung Ereignisses ändern, keine Notwendigkeit, die Art Handler außer Kraft setzt, kann aber nicht in mxml erfolgen.

protected function dataGrid_initializeHandler(event:FlexEvent):void {
    dataGrid.addEventListener(AdvancedDataGridEvent.SORT, dataGrid_sortHandler, false, -50);
}

protected function dataGrid_sortHandler(event:FlexEvent):void {
    dataGrid.dataProvider.sort; // now up to date!
}


<mx:AdvancedDataGrid id="dataGrid" initialize="dataGrid_initializeHandler(event)" dataProvider="{model.dataProvider}" />

Sie können auch einen Blick auf die AdvancedDataGridSortItemRenderer Klasse. Dies hilft, die Art Elementrenderers anpassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top