Flex AdavcedDatagrid排序区分大小写

时间:2010-07-27 13:17:37

标签: flex datagrid

我有几个更改列的数据网格。对于文本字段,datagrid的sort函数需要进行区分大小写的比较。

例如。以下列出的列表看起来像这样

apples
strawberries
Autos

汽车应该是苹果,但由于资本A的计算方式不同,所以大写字母都会出现。

我发现了很多关于设置CASEINSENSITIVE标志的信息,但我无法弄清楚在哪里这样做。能否请你帮忙?最好的解决方案是我可以覆盖默认行为,以便对所有数据网格和所有比较函数不区分大小写。

3 个答案:

答案 0 :(得分:1)

在数据网格列上设置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);
    }

答案 1 :(得分:0)

排序应用于基础数据提供者。因此,您需要通过设置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();
}

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

带走信息,ADG真的很垃圾。

答案 2 :(得分:0)

相关问题