代码之家  ›  专栏  ›  技术社区  ›  luca

数据网格的保存状态:可见列、列宽度和顺序

  •  2
  • luca  · 技术社区  · 16 年前

    我想远程保存(在数据库上)Flex3数据网格的状态(可见列、列宽度和顺序)。

    对于宽度和可见性,我可以通过访问每个列属性来保存它们。。丑陋但可能。。 但为了订单?我必须动态创建数据网格吗??

    任何想法都值得赞赏 谢谢

    2 回复  |  直到 16 年前
        1
  •  1
  •   Stephen Mullin    14 年前

    在我的例子中,我是按标题名保存订单的(我假设您的DataGrid总是具有相同的列和标题名)。

            for (var n:Number = 0; n< datagrid.columns.length; n++)
            {
                var thiscol:DataGridColumn = DataGridColumn(datagrid.columns[n]);
                colArray.addItem(thiscol.headerText);
            }
    

            for (var n:Number = 0; n < colArray.length; n++)
            {
                moveColumnTo(String(colArray.getItemAt(n)), n);
            }
    

    我定义了一个函数moveColumnTo()来执行切换。

            private function moveColumnTo(columnName:String, columnIndex:Number):void
            {
                // Find current column position
                var i:Number = -1;
                for (var n:Number = 0; n < datagrid.columns.length; n++)
                {
                    if (DataGridColumn(datagrid.columns[n]).headerText == columnName)
                    {
                        i = n;
                        break;
                    }
                }
    
                if (i == -1 || i == columnIndex) return; // Don't shift column
    
                this.mx_internal::shiftColumns(i, columnIndex); // Shift column to required position
            }
    
        2
  •  0
  •   CookieOfFortune    16 年前

    for(var i:int = 0; i < dataGrid.columns.size; i++)
    {
        var column:DataGridColumn = dataGrid.columns[i];
        arr.push({column.visible, column.width, i});
    }
    
    推荐文章