【问题标题】:Flex AdvancedDataGrid - ColumnOrder With Formatter and ItemRenderer Question For ExpertsFlex AdvancedDataGrid - ColumnOrder 与 Formatter 和 ItemRenderer 专家问题
【发布时间】:2010-03-25 22:12:11
【问题描述】:
I have a advanceddatagrid that has around 15 columns. Some are string,
some are numbers. I have shown 4 columns below.
The number columns have formatting done for zero precision and 2
digits precision.  The itemRenderer is just to show Blue Color if the
number is +ve and Red Color if the number is -ve.
It looks something like below

<mx:columns>
<mx:AdvancedDataGridColumn dataField="Name" textAlign"left"/>
<mx:AdvancedDataGridColumn dataField="Time" textAlign="right"/>
<mx:AdvancedDataGridColumn dataField="Score" textAlign="right"  formatter="{zeroPrecisionFormatter}" sortable="true"   itemRenderer="ColorRenderer" />
<mx:AdvancedDataGridColumn dataField="Average" textAlign="right" headerWordWrap="true" formatter="{twoPrecisionFormatter}" itemRenderer="ColorRenderer" />

...

I am trying to save the users setting of column order  when he closes
the application and reload with the same order when the user opens the
applications. I am using SharedObjects and below is the code.

for(var i:int=0; i< adgrid.columns.length;i++){
     var columnObject:Object = new Object(); 
     columnObject.columnDataField = adgrid.columns[i].dataField as String;
     columnObject.columnHeader =adgrid.columns[i].headerText as String;
     columnObject.width = adgrid.columns[i].width;
     columnArray.push(columnObject);
 }

and then I save the columnArray to SharedObject.

I retrive them using the below code

 for(var i:int=0;i<columnArray.length;i++){  
    adgrid.columns[i].dataField =columnArray[i].columnDataField;
    adgrid.columns[i].headerText =columnArray[i].columnHeader;
    adgrid.columns[i].width = columnArray[i].width;
    }

How can I save and reload the Formatter and ItemRenderer data .
I am having trouble saving the formatter and itemrenderer and
reloading it again.


I would really appreciate if you can shown the code. 
How can I reshuffle the columns but can preserve all the properties of it to though  sharedobject and recover it again. 

【问题讨论】:

    标签: apache-flex advanceddatagrid


    【解决方案1】:
                private function loadLayout(name:String="custom"):void {
                var storedLayoutData:SharedObject; 
                storedLayoutData = SharedObject.getLocal("layouts");
                if (storedLayoutData.data["pocketBankDG_"+name]) {
                    var columns:Array = new Array();
                    var index:int = 0;
                    for each (var column:Object in storedLayoutData.data["pocketBankDG_"+name]["columns"]) {
                        for ( var key:String in column) {
                            var propClass:Class = getDefinitionByName(column[key].propClassName) as Class;
                                adgOperations.columns[index][key] = column[key].propValue as propClass;
                        }
                        index++
                    }
                } else {
                    saveLayout("default");
                    openSettingsWindow();
                }
            }
    
            private function saveLayout(name:String="custom"):void {
                var storedLayoutData:SharedObject; 
                storedLayoutData = SharedObject.getLocal("layouts");
                if (!storedLayoutData.data["pocketBankDG"]) storedLayoutData.data["pocketBankDG_"+name] = new Object();             
                var columns:Array = new Array();
                for each(var column:AdvancedDataGridColumn in adgOperations.columns) {
                    var describeType:XML = flash.utils.describeType(column);
                    var accessoriesList:XMLList = describeType..accessor;
                    var data:Object = new Object;
                    for each(var accessor:XML in accessoriesList) {
                        if (accessor.@access=="readwrite") {
                            var propClassName:String = getQualifiedClassName(column[accessor.@name]);
                            var propValue:* = column[accessor.@name];
                            if (propClassName=="String" || propClassName=="int" || propClassName=="Boolean" || 
                                propClassName=="Number" || propClassName=="uint") {
                                data[accessor.@name] = {}
                                data[accessor.@name].propClassName = propClassName;
                                data[accessor.@name].propValue = propValue;
    
                            }
                        }
                    }               
                    columns.push(data);
                }
    
                storedLayoutData.data["pocketBankDG_"+name]["columns"] = columns;
                storedLayoutData.flush();
            }
    

    【讨论】:

      猜你喜欢
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多