Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 由自定义子类激发时,invalidateList()不适用于AdvancedDataGrid_Apache Flex_Flex3_Flex Datagrid - Fatal编程技术网

Apache flex 由自定义子类激发时,invalidateList()不适用于AdvancedDataGrid

Apache flex 由自定义子类激发时,invalidateList()不适用于AdvancedDataGrid,apache-flex,flex3,flex-datagrid,Apache Flex,Flex3,Flex Datagrid,如果用户移动AdvancedDataGrid列并关闭窗口或注销,我希望为其保留AdvancedDataGrid列顺序。我有一个代码(见下文),当我把代码放在一个网格父容器中(例如,一个标题窗口)时,它可以工作。我希望通过将代码放在AdvancedDatagrid子类中而不是每个网格容器中来概括此功能,以便在保存/加载其选择时,所有网格都可以访问单个位置。我的方法是将数据字段名和网格名存储在一个数组中,并保存/读取共享对象。并基于该顺序更新列顺序。当我在AdvancedDataGrid子类中使用代

如果用户移动AdvancedDataGrid列并关闭窗口或注销,我希望为其保留AdvancedDataGrid列顺序。我有一个代码(见下文),当我把代码放在一个网格父容器中(例如,一个标题窗口)时,它可以工作。我希望通过将代码放在AdvancedDatagrid子类中而不是每个网格容器中来概括此功能,以便在保存/加载其选择时,所有网格都可以访问单个位置。我的方法是将数据字段名和网格名存储在一个数组中,并保存/读取共享对象。并基于该顺序更新列顺序。当我在AdvancedDataGrid子类中使用代码时,无效失败,但在网格父类中工作良好。有人有什么想法吗?。两天来,我一直在用我的头撞击这个:(

私有函数加载设置(名称:String=“custom”):void { var gridName:String=this.stripUIDNumbers(this.uid); 变量温度:数组=新数组

        this.wsColOrder = SharedObject.getLocal(sharedObjectName);
        if (wsColOrder.size > 0)
        {
            for each (var item:* in wsColOrder.data)
            {
                if (item is Array && item.indexOf(gridName) != -1) // check for the current grid
                {
                    for each (var saveColDataField:String in item)
                    {
                        for each (var existingCol:AdvancedDataGridColumn in this._columns)
                        {
                            if (existingCol.dataField == saveColDataField)
                            {
                                temp.push(existingCol);
                            }
                        }
                    }
                    this._columns.splice(0); // clean out the existing colum array
                    this._columns =  temp  //  assign persisted  col order
                    this.invalidateList(); // update the grid
                }
            }
        }
        else
        {
           // saveSettings("default");
        }

乍一看,我会问您为什么要使用_columns变量。使用'columns'getter/setter将保证您使用的是无效过程,并且在继承的AdvancedDatagrid中设置和重置了正确的标志……,这是我要更改的第一件事。(还有,拼接(0)在下一行设置列数组时不需要行)

嗯,这是我要改变的第二件事……我首先要确保键入您的本地sharedObjects,但这是我个人对代码可读性的偏好。谷歌“flash.net.registerClassAlias”或使用ValueObject类执行某些操作,以便您可以存储数据字段顺序,这样您就不必执行“for each*”


希望这至少有一点帮助。祝你好运。

还有,你什么时候打电话给loadSettings()?谢谢Jeremy的帮助。我应该早点回来。我最终不得不接受妥协。我必须将功能存储在一个包含文件中(在20多个网格中使用过)并在网格所有者级别访问它,因为mxml中定义的网格列属性设置似乎总是覆盖了网格上定义的actionscript运行时更改。