SplitApp的主视图中的默认选定列表项

时间:2016-08-08 14:31:52

标签: sapui5

我有一个带有Master -Detail布局的SplitApp。我想知道如何将主视图中的第一项设置为默认值,以便在加载应用程序时详细信息视图显示有关选择列表项的信息。因此,当用户自动打开应用程序时,应选择Master中的第一个项目,并且Detail View显示该信息。

我使用Objectlist Item作为Master视图的控件。目前正在使用select事件来选择列表项。

var oList = new sap.m.List("idMasterList",{
     mode: sap.m.ListMode.SingleSelect,
     select: [oController.onSelectItem, oController]
            });

onSelectItem:function(oEvent){

 //var app = sap.ui.getCore().byId("splitApp");
 var oMasterList = sap.ui.getCore().byId("idMasterList");
 var oSelItem = oMasterList.getSelectedItem();

 var sPath = oSelItem.oBindingContexts.druginfo.sPath; 
 var oItem = sap.ui.getCore().getModel("druginfo").getProperty(sPath);
 var oSelModel = new sap.ui.model.json.JSONModel(oItem) ;
 sap.ui.getCore().setModel(oSelModel, "SelectedItem");

 }

此致 Mayank

1 个答案:

答案 0 :(得分:3)

在设置所选项目时似乎有(隐藏)API使select事件触发:

ListBase.prototype.setSelectedItem = function(oListItem, bSelect, bFireEvent) {
    if (this.indexOfItem(oListItem) < 0) {
        jQuery.sap.log.warning("setSelectedItem is called without valid ListItem parameter on " + this);
        return;
    }
    if (this._bSelectionMode) {
        oListItem.setSelected((bSelect === undefined) ? true : !!bSelect);
        bFireEvent && this._fireSelectionChangeEvent([oListItem]);
    }
};

您可以在加载列表数据后使用setSelectedItem(例如change聚合绑定事件items),如下所示:

var oList = this.getView().byId("MyListID"),
    oFirstItem = oList.getItems()[0];
oList.setSelectedItem(oFirstItem, true, true);

这将触发selectionChange resp。 <{1}}事件将触发您已存在的事件侦听器。