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

flex-adavcedatagrid排序区分大小写

  •  0
  • Dennkster  · 技术社区  · 14 年前

    我有几个列在变化的数据报。对于文本字段,数据报的排序函数必须进行区分大小写的比较。

    下面排序的列表应该是这样的

    apples
    strawberries
    Autos
    

    汽车应该有苹果,但由于大写字母A的计算方式不同,所有大写字母都在后面。

    我发现了很多关于设置不区分大小写标志的信息,但我不知道该在哪里做。你能帮忙吗?最好的解决方案是我可以覆盖默认行为,使我的所有数据报和所有比较函数不区分大小写。

    3 回复  |  直到 13 年前
        1
  •  0
  •   Amarghosh    14 年前
        2
  •  1
  •   Christian Specht    13 年前

    设置 sortCompareFunction 在数据报列上:

    <mx:DataGridColumn dataField="name" headerText="Name" sortCompareFunction = sortCaseInsensitive  />
    
    private function sortCaseInsensitive(obj1:Object, obj2:Object):int
        {
            return ObjectUtil.stringCompare(obj1.name, obj2.name, true);
        }
    
        3
  •  0
  •   Gregor Kiddie    14 年前

    排序将应用于基础数据提供程序。所以您需要通过设置 sort fields . 您需要从报头捕获排序事件,并防止它是默认行为,并动态地对arraycollection排序。

    protected function onHeaderRelease( event : AdvancedDataGridEvent ) : void {
        event.preventDefault();
        var sort : Sort = new Sort();
        sort.fields = [new SortField(event.dataField, true)];
        dataProvider.sort = sort;
        dataProvider.refresh();
    }
    

    请注意,这将阻止标题上的箭头呈现。当再次单击标题时,还需要添加用于反转排序的代码。

    带走信息,广告真是垃圾。

    推荐文章