0

我想对我的 gridcolumn 进行排序。这是我的 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>

它不起作用。我在列标题中看不到箭头,并且任何内容都已排序。提前感谢您的帮助!

好的,通过用 Arraycollection 替换 AsyncListView 来解决:

<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。

4

2 回答 2

0

是的。正如 RIAstar 所建议的,将 AsyncListView 更改为 ArrayCollection 即可。注意 asynclist 是 Fl​​ex 生成的数据结构。

另请注意,不必将 DataGrid 的列标记内定义的 Arraylist 更改为 Arraycollection。有趣的。

于 2013-02-04T23:35:19.947 回答
0
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"/>    
于 2016-06-09T09:25:19.577 回答