我有几个列不断变化的数据网格。对于文本字段,datagrid的排序函数需要进行区分大小写的比较。
例如:排序后的列表如下所示
apples
strawberries
Autos汽车应该用苹果,但由于大写字母A的计算方式不同,所有的大写字母都跟在后面。
我已经找到了很多关于设置CASEINSENSITIVE标志的信息,但我不知道在哪里可以这样做。你能帮帮忙吗?最好的解决方案是,我可以覆盖所有数据网格和所有比较函数的默认行为,使其不区分大小写。
发布于 2010-07-27 22:07:57
发布于 2011-01-20 03:16:26
在数据网格列上设置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);
}发布于 2010-07-27 22:04:12
排序将应用于基础数据提供程序。因此,您需要通过设置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();
}请注意,这将停止呈现标题上的箭头。您还需要添加代码,以便在再次单击标题时反转排序。
带走信息,助理总干事真的是垃圾。
https://stackoverflow.com/questions/3343996
复制相似问题