我有几个更改列的数据网格。对于文本字段,datagrid的sort函数需要进行区分大小写的比较。
例如。以下列出的列表看起来像这样
apples
strawberries
Autos
汽车应该是苹果,但由于资本A的计算方式不同,所以大写字母都会出现。
我发现了很多关于设置CASEINSENSITIVE标志的信息,但我无法弄清楚在哪里这样做。能否请你帮忙?最好的解决方案是我可以覆盖默认行为,以便对所有数据网格和所有比较函数不区分大小写。
答案 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)