【问题标题】:Sorting datagrid by two columns removes the sort arrow [duplicate]按两列对数据网格进行排序会删除排序箭头[重复]
【发布时间】:2013-06-20 15:25:05
【问题描述】:

我使用的是 Flex 3.6 版,我需要按两列对数据网格进行排序。当我单击列标题时,排序箭头会显示在它上面。

我现在要做的是,当我点击 1 个特定列时,它将按两列排序。那部分正在工作。

但我注意到通常出现在已排序列上的排序箭头指示符已消失。我正在使用 DataGrid 的子类,所以在排序后,我尝试使用 placeSortArrow(),但我注意到在 DataGridHeader.assortArrow 为空。

protected function headerReleaseListener(event:DataGridEvent):void
{
    if(event.columnIndex == 0)
    {
        event.preventDefault();

        var sort:Sort = new Sort();
        sort.fields = [new SortField("@name",true, true), new SortField("@address",true, false)];

        ArrayCollection(this.dataProvider).sort = sort;
        ArrayCollection(this.dataProvider).refresh();
    }
}

我想要的是指定排序箭头应该出现在哪一列上,一列是按一列还是多列排序。有谁知道这是否可能?

【问题讨论】:

    标签: sorting apache-flex dataprovider columnheader


    【解决方案1】:

    我从另一个问题中找到了消失的排序箭头的答案:Flex: Database driven DataGrid: arrows disappearingili 回答的问题中,并对其进行了调整以适合我的代码。

    因为有两列已排序,内部 sortIndex 为 -1,因此 sortArrow 为空。

    通过选择一个列来显示排序(我使用了主排序列)并设置一个 sortIndex 和方向,sortArrownow 出现了。

    protected function headerReleaseListener(event:DataGridEvent):void
    {
        if(event.columnIndex == 0)
        {
            event.preventDefault();
    
            var sort:Sort = new Sort();
            sort.fields = [new SortField("@name",true, true), new SortField("@address",true, false)];
    
            ArrayCollection(this.dataProvider).sort = sort;
            ArrayCollection(this.dataProvider).refresh();
    
            mx_internal::sortIndex = event.columnIndex;
    
            mx_internal::sortDirection = (mx_internal::sortDirection == null || mx_internal::sortDirection == "ASC") ? "DESC" : "ASC";
    
            placeSortArrow();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-07-21
      • 2015-12-25
      • 2023-03-07
      • 2015-12-29
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多