我想对我的网格列进行排序。下面是我的sortCompareFunction代码:
protected function sortCompareFunction(obj1:Object, obj2:Object, gc:GridColumn):int
{
collator.ignoreCase=true;
return collator.compare(obj1[gc.dataField], obj2[gc.dataField]);
}和数据网格:
<s:DataGrid id="dataGrid" width="100%" height="100%" borderColor="#CCCCCC" borderVisible="true"
chromeColor="#CCCCCC" color="#000000" contentBackgroundColor="#8C90BB"
selectionColor="#D0E4E9" symbolColor="#FFFFFF" sortableColumns="true">
<s:columns>
<s:ArrayList>
<s:GridColumn width="150" dataField="title" headerText="Progetto"
sortCompareFunction="sortCompareFunction"></s:GridColumn>
<s:GridColumn dataField="author" headerText="Stato" width="50"></s:GridColumn>
<s:GridColumn dataField="newsdate" headerText="Scadenza"></s:GridColumn>
</s:ArrayList>
</s:columns>
<s:AsyncListView list="{FlexGlobals.topLevelApplication.PMProjs.lastResult}"/>
</s:DataGrid>它不起作用。我看不到列标题中的箭头,任何内容都已排序。提前感谢您的帮助!
Ok,通过将AsyncListView替换为Arraycollection来解决:
<s:DataGrid id="dataGrid" width="100%" height="100%" borderColor="#CCCCCC" borderVisible="true"
chromeColor="#CCCCCC" color="#000000" contentBackgroundColor="#8C90BB"
selectionColor="#D0E4E9" symbolColor="#FFFFFF">
<s:columns>
<s:ArrayList>
<s:GridColumn width="150" dataField="title" headerText="Progetto"
showDataTips="title"></s:GridColumn>
<s:GridColumn dataField="author" headerText="Stato" width="50"></s:GridColumn>
<s:GridColumn dataField="newsdate" headerText="Scadenza"></s:GridColumn>
</s:ArrayList>
</s:columns>
<s:ArrayCollection list="{FlexGlobals.topLevelApplication.PMProjs.lastResult}"/>没有sortCompareFunction的话。
发布于 2013-02-05 07:35:20
是。按照RIAstar的建议,将AsyncListView更改为ArrayCollection就可以了。注意,asynclist是由Flex生成的数据结构。
还要注意,在DataGrid的columns标记内定义的数组列表不必更改为数组集合。有意思的。
发布于 2016-06-09 17:25:20
protected function sortTtl_changeHandler(event:IndexChangeEvent):void
{
switch(event.newIndex)
{
case 0:
{
var sort:Sort = new Sort();
sort.fields = [new SortField("title", true)];
dataGrid.sort = sort;
dataGrid.refresh();
break;
}
case 1:
{
var sort:Sort = new Sort();
sort.fields = [new SortField("author", true)];
dataGrid.sort = sort;
dataGrid.refresh();
break;
}
case 2:
{
var sort:Sort = new Sort();
sort.fields = [new SortField("newsdate", true)];
dataGrid.sort = sort;
dataGrid.refresh();
break;
}
default:
{
break;
}
}
}
<s:DropDownList id="sortTtl" visible="false" width="128"
change="sortTtl_changeHandler(event)" dataProvider="{sortData}"
labelField="label"/> https://stackoverflow.com/questions/12854612
复制相似问题