使用 oModel.createKey 在拆分应用程序的主列表中查找特定项目

Find an specific item in the master list of an split app by using oModel.createKey

我正在使用拆分应用程序布局来编辑和创建新员工。因此我确实有一个按钮 "Add employee"。 submitChanges 完成后,我想在主列表中找到这个新员工并 select 它。

我正在使用事件总线进行细节控制器和主控制器之间的通信。

fnAfterSubmitChangesSuccess: function(sChanel, sEvent, oData) {        
   var oResponseData = oData.__batchResponses[0].__changeResponses[0].data;
   var sBindingPath = oModel.createKey("/EmployeeSet", {Begda: oData.Begda, Endda: oData.Endda, Pernr: oData.Pernr}).replace(/:\s*/g, "%3A");    
},

有没有办法通过使用绑定路径找到特定列表项的索引。还是有另一种方法可以解决这个问题,而不是遍历整个列表进行比较?

恐怕通过绑定路径查找特定列表项的索引的唯一方法是遍历列表项的集合。所以,恐怕一个非常简单和简短的答案是 "No"。

不过这很简单,代码没有那么长,而且如果您不是在谈论庞大的列表,它也不应该花费太多性能。不过,您将不得不浏览项目列表。一旦找到绑定到您要查找的上下文路径的项目,您可以使用 setSelectedItem select 它,如下所示:

var list = this.getView().byId("list");
jQuery.each(list.getList(), function(idx, item) {
    if (items.getBindingContext().getPath = sBindingPath) {
        list.setSelectedItem(item);
    }
});

注意:请记住,如果您正在使用 OData 服务并且正在使用所谓的 'growing list',您要查找的条目可能不一定在列表中。

抱歉,希望我能给你一个更愉快的答案。