如何通过用户事件更改SAPUI5中列表的排序?

时间:2016-07-05 15:08:10

标签: sapui5

在我的拆分应用程序的主视图中,我有一个包含采购订单项目的列表。最初,列表按采购订单编号降序排列。我通过声明性地在xml-View中定义一个分类器来实现这个目的:

<List
    id="listBestellungen"
    noDataText="{i18n>masterListNoDataText}"
    growing="true"
    growingScrollToLoad="true"
    updateFinished="onUpdateFinished"
    selectionChange="onSelectionChange"
    items="{
        path: '/PO_HeadInfoSet',
        sorter: {
            path: 'POHI_Ebeln',
            descending: true
        }
                    }"
                    mode="SingleSelectMaster"
                    >
...

然后我在页脚中有一个SortSelect-Button with press-Event&#34; onSorting&#34;。

onSorting函数如下所示:

onSorting: function(oEvent) {
        var oView = this.getView();
        var oList = oView.byId("listBestellungen");
        var oBinding = oList.getBinding("items");

        var SORTKEY = "POHI_Ebeln";
        var DESCENDING = false;
        var GROUP = false;
        var aSorter = [];

        aSorter.push(new sap.ui.model.Sorter(SORTKEY, DESCENDING, GROUP));
        oBinding.sort(aSorter);
    }

单击排序按钮时会调用onSorting函数。我也可以看到,在绑定中改变了排序方向。

但是为什么或如何更改UI中列表的排序?

亲切的问候

迈克尔

2 个答案:

答案 0 :(得分:0)

尝试刷新模型。由于列表绑定到模型,因此将刷新所有绑定对象(您要更改的UI元素)

var oModel = this.getView().getModel();
oModel.refresh();

答案 1 :(得分:0)

我知道您的问题是按下一个排序按钮,该按钮将按升序对列表进行排序,然后再次按下该列表将按降序排序。

这是怎么做的:

onInit:function(){
            this.bDescending = true;
},
onListSort:function(){
            var oList=this.byId("listNotesAttachments"), 
                oBinding = oList.getBinding("items");

            var sSortKey = "Time";
            this.bDescending= !this.bDescending; //switches the boolean back and forth from ascending to descending
            var bGroup = false;
            var aSorter = [];

            aSorter.push(new sap.ui.model.Sorter(sSortKey, this.bDescending, bGroup));
            oBinding.sort(aSorter);
}