سؤال

وأنا بحاجة إلى إلى عمود متعددة برنامجي فرز على AdvancedDataGrid. المسألة هي، حاليا أنا تنفيذ الترحيل على بلدي الشبكة. لذا، إذا كنت فرز البيانات، فقط على الصفحة perticular يتم فرزها. لذلك، ولست بحاجة لفرز القائمة بأكملها من خلال معايير العمود.

وحاولت الحدث HeaderRelease، ولكن أعتقد أنه لا جدوى منها وأنا في حاجة إلى إجراء مكالمة ذهابا وإيابا إلى خادم للحصول على بيانات تم فرزها. هل هناك أي طريقة أستطيع تنفيذ ذلك. أنا أيضا بحاجة لإظهار علامات الفرز في الموقف الصحيح ورؤوس الأعمدة "، مما يدل على أرقام فرز والاتجاه.

'ليرة لبنانية نقدر حقا مساعدة

والشكر:)

هل كانت مفيدة؟

المحلول

إذا تم ترحيلها البيانات الخاصة بك، سيكون لديك للذهاب إلى الملقم لاسترداد البيانات على أي حال. إذا تم تخزين فقط جزء من البيانات جانب العميل، قد يكون من الأفضل أن مجرد نوع على الخادم، منذ إلا خادم سيكون كافة البيانات.

نصائح أخرى

وتحتاج إلى تمديد AdvancedDataGrid وتجاوز 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(',');
}

واصنع المخصصة الخاصة المسبق Datagrid على النحو الوارد في المثال التالي. لديك مجموعة من الأعمدة فرزها والنظام. إرسال الحدث صنع Cutom وتمرير هذه المجموعة لذلك. فإن تك جانب الخادم جعل الاستعلام وفقا لذلك والعودة لك النتيجة.

             

        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 !! غاب عن الجزء الأول من قانون .... هنا هو رمز الصحيح

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

وحاول modifiyng الأولوية الحدث الحدث النوع، لا حاجة لتجاوز معالج النوع، ولكن لا يمكن القيام به في MXML.

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

ويمكنك أيضا إلقاء نظرة على الطبقة AdvancedDataGridSortItemRenderer. وهذا يساعد على تخصيص البند نوع العارض.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top