2016-08-08 34 views
0

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

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

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

onSelectItem:功能(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

回答

2

好像有(隐藏)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。 select事件和您已经存在的事件侦听器将被触发。