sap.m.List滚动到特定项目

问题描述 投票:0回答:2

我正在使用SAPUI5应用程序中的sap.m.List。共有90个条目,最近3个月中每天有1个条目。看起来像这样:

enter image description here

现在,当单击按钮时,我想滚动到特定的CustomListItem。我的视图看起来像这样:enter image description here

想法是,我有三个按钮可以直接滚动到一个月。例如:今天,上个月,第三个月。单击按钮直接滚动到该月的第一项。我刚发现某事。像oList.setSelectedItem(oItem, true);无效。

有人知道如何做到这一点?

谢谢你。

javascript list sapui5
2个回答
0
投票

我建议您看一下Plunker的这段代码。我分叉了另一个矮人,并抽动了一下代码。在其中,您可以在滚动容器中找到一个列表,该列表随后通过了解列表项的id属性用于到达所需项。

http://plnkr.co/edit/a5JwfkvAZcHq7NDoYG5s?p=preview

handleSelectChange: function(oEvent) {
      var sId = oEvent.getParameter("selectedItem").getBindingContext().getObject().id;
      var oList = this.getView().byId("ProductList");
      var aListItems = oList.getItems();
      var oListItem;
      aListItems.forEach(function(element){
        var sListObjectId = element.getBindingContext().getObject().id;
        if(sId === sListObjectId){
          oListItem = element;
        }
      })
      var oScrollContainer = this.getView().byId("oScrollContainer");
      jQuery.sap.delayedCall(0, null, function() {
        oScrollContainer.scrollToElement(oListItem);
        oList.setSelectedItem(oListItem);
      });
    }

希望有帮助!


0
投票

您可以检索周围容器的ScrollDelegate(在我看来是FixFlex的情况下),然后使用它滚动到选定的项目。简短示例:

oFixFlex.getScrollDelegate().scrollToElement(oItem.getDomRef());

另一种替代方法是将您的容器包装在Scrollcontainer中,如其他答案中所述。

© www.soinside.com 2019 - 2024. All rights reserved.