2010-07-27 58 views
0

我有幾個datagrids與更改列。對於文本字段,datagrid的排序函數必須進行區分大小寫比較。Flex AdavcedDagagrid排序區分大小寫

例如。排序下面的列表看起來像這樣

apples 
strawberries 
Autos 

汽車應與蘋果,但由於資本A會計不同全部大寫字母來之後。

我發現了很多有關設置CASEINSENSITIVE標誌的信息,但我無法弄清楚在哪裏做到這一點。能否請你幫忙?最好的解決方案將是我可以覆蓋默認行爲,以便對我的所有數據網格和所有比較函數不區分大小寫。

回答

0
+0

我終於實現了這一點,但我覺得這是一種不乾淨的,因爲現在我不得不手動每次都存在添加是文本字段,但不是數字或日期字段。我希望能夠在整個應用程序的某個位置爲全局設置。 – Dennkster 2010-08-01 06:28:57

0

該排序適用於基礎數據提供者。所以你需要通過設置sort fields來改變Sort的工作方式。您需要從頭文件中捕獲排序事件,並防止其默認行爲並即時對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真的是垃圾。

1

你的DataGrid列設置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); 
    } 
相關問題