Hi Jamie.. Please find the Code below: Detail view shows the data.. Detail2 view doesnt show the data.. I am provigind four scripts...
Detail Controller :
sap.ui.core.mvc.Controller.extend("zfin.view.Detail", {
onInit: function() {
this.oInitialLoadFinishedDeferred = jQuery.Deferred();
if (sap.ui.Device.system.phone) {
//Do not wait for the master2 when in mobile phone resolution
this.oInitialLoadFinishedDeferred.resolve();
} else {
var oEventBus = this.getEventBus();
oEventBus.subscribe("Master2", "LoadFinished", this.onMasterLoaded, this);
}
this.getRouter().attachRouteMatched(this.onRouteMatched, this);
},
onMasterLoaded: function(sChannel, sEvent, oData) {
if (oData.oListItem) {
this.bindView(oData.oListItem.getBindingContext().getPath());
this.oInitialLoadFinishedDeferred.resolve();
}
},
// Manoj.new
onRoutePatternMatched: function(oEvent) {
var sName = oEvent.getParameter("name");
if (sName !== "detail2") {
return;
}
// Load the detail view in desktop
this.getRouter().myNavToWithoutHash({
currentView: this.getView(),
targetViewName: "zfin.view.Detail2",
targetViewType: "XML"
});
},
// manoj
onRouteMatched: function(oEvent) {
var oParameters = oEvent.getParameters();
jQuery.when(this.oInitialLoadFinishedDeferred).then(jQuery.proxy(function() {
// When navigating in the Detail page, update the binding context
if (oParameters.name === "detail") {
var sEntityPath = "/" + oParameters.arguments.entity;
this.bindView(sEntityPath);
} else {
return;
}
}, this));
if (oParameters.name === "detail" && jQuery.device.is.phone) {
this.getRouter().myNavToWithoutHash({
currentView: this.getView(),
targetViewName: "zfin.view.Detail2",
targetViewType: "XML",
transition: "slide"
});
}
},
bindView: function(sEntityPath) {
var oView = this.getView();
oView.bindElement(sEntityPath);
// Oview.byID("ITEMDetails").setModel(sEntityPath);
//Check if the data is already on the client
if (!oView.getModel().getData(sEntityPath)) {
// Check that the entity specified was found
var oData = oView.getModel().getData(sEntityPath);
if (!oData) {
this.showEmptyView();
this.fireDetailNotFound();
} else {
// this.getView().byId("idProductsTable").setModel(demoJSONModel);
// this.getView().byID("ITEMDetails").setModel();
this.fireDetailChanged(sEntityPath);
}
} else {
this.fireDetailChanged(sEntityPath);
}
},
showEmptyView: function() {
this.getRouter().myNavToWithoutHash({
currentView: this.getView(),
targetViewName: "zfin.view.NotFound",
targetViewType: "XML"
});
},
fireDetailChanged: function(sEntityPath) {
this.getEventBus().publish("Detail", "Changed", {
sEntityPath: sEntityPath
});
},
fireDetailNotFound: function() {
this.getEventBus().publish("Detail", "NotFound");
},
onNavBack: function() {
// This is only relevant when running on phone devices
this.getRouter().myNavBack("main");
},
onDetailSelect: function(oEvent) {
sap.ui.core.UIComponent.getRouterFor(this).navTo("detail", {
entity: oEvent.getSource().getBindingContext().getPath().slice(1)
}, true);
},
onSelect: function(oEvent) {
sap.ui.core.UIComponent.getRouterFor(this).navTo("detail", {
entity: oEvent.getSource().getBindingContext().getPath().slice(1)
}, true);
},
onClick: function(oEvent) {
sap.ui.core.UIComponent.getRouterFor(this).navTo("detail", {
entity: oEvent.getSource().getBindingContext().getPath().slice(1)
}, true);
},
// rowSelectionChanged: function(oControlEvent)
// {
// var selectedRowContext = oControlEvent.getParameter("detail");
// // var link = oControlEvent.getSource().getBindingContext();
// // var fr = oControlEvent.getBindingContext();
// // var ctx = oControlEvent.getBindingContext();
// sap.m.alert(selectedRowContext);
// },
onLineItemPressed: function(oEvent) {
alert(" I am clicked");
// begin of manu 07/20
// var context = oEvent.getParameter("master2").getBindingContext();
// var odata = context.getPath();
// this.oHasher = sap.ui.core.routing.HashChanger.getInstance();
// console.log(this.oHasher);
// this.oHasher.setHash(context);
// var sViewID = this.oHasher.getHash().split("/")[2];
// this._oRouter.navTo("Detail2",{contextPath:sViewID});
// this._oRouter.navTo("Detail2");
// console.log ("after navigation"+context);
// end of manu 07/20// TODO:
var selected = oEvent.getParameter("key");
var view = sap.ui.getCore().byId(selected);
// alert(view);
// if(view === undefined) {
// view = new sap.ui.view({
// id: selected,
// viewname: "zfin.view.detail2",
// type : sap.ui.core.mvc.ViewType.XML});
// sap.ui.getCore().byId("zfin.view.Detail2").getController();
this.getView().getController("zfin.view.Detail2");
// this.getView().
this.getRouter().myNavToWithoutHash({
currentView: this.getView(),
targetViewName: "zfin.view.detail2",
targetViewType: "XML"
});
// console.log(selected);
// var bReplace = jQuery.device.is.phone ? false : true;
// this.getRouter().navTo("detail2", {
// from: "Detail",
// entity: oItem.getBindingContext().getPath().substr(1)
// }, bReplace);
// var bReplace = jQuery.device.is.phone ? false : true;
// this._oRouter.navTo("detail2", {
// from: "detail",
// entity: oEvent.getSource().getBindingContext().getPath().substr(1),
// tab: null
// }, bReplace);
// sap.ui.core.UIComponent.getRouterFor(this).navTo("detail2",{
// entity : oEvent.getSource().getBindingContext().getPath().slice(1)
// }, true);
},
getEventBus: function() {
return sap.ui.getCore().getEventBus();
},
getRouter: function() {
return sap.ui.core.UIComponent.getRouterFor(this);
}
});
Detail View
<mvc:View
controllerName="zfin.view.Detail"
xmlns:mvc="sap.ui.core.mvc"
xmlns:l="sap.ui.layout"
xmlns:f="sap.ui.layout.form"
xmlns:core="sap.ui.core"
xmlns:table="sap.ui.table"
xmlns="sap.m">
<Page
id="detailPage"
navButtonPress="onNavBack"
class="sapUiFioriObjectPage"
title="{i18n>detailTitle}">
<content>
<ObjectHeader
title="{Invoicedocnumber}"
select="onSelect"
number="{ItemAmount}" >
<attributes>
<ObjectAttribute
text="{InvoiceDocItem}"/>
</attributes>
<firstStatus>
<ObjectStatus
text="{FISCYEAR}"/>
</firstStatus>
</ObjectHeader>
<IconTabBar
select="onDetailSelect"
id="idIconTabBar">
<items>
<IconTabFilter
key="Details"
icon="sap-icon://hint">
<content>
<l:Grid
id="detailGrid"
defaultSpan="L12 M12 S12"
width="auto">
<l:content>
<f:SimpleForm
id="detailForm"
minWidth="1024"
maxContainerCols="2"
editable="false"
layout="ResponsiveGridLayout"
labelSpanL="3"
labelSpanM="3"
emptySpanL="4"
emptySpanM="4"
columnsL="1"
columnsM="1">
<f:content>
<!-- Manu Begin -->
<Label id="label3" text="Invoice Document"/>
<Text id="text3" text="{Invoicedocnumber}" />
<Label id="label4" text="Invoice Itemno."/>
<Text id="text4" text="{InvoiceDocItem}"/>
<Label id="label5" text="YEAR"/>
<Text id="text5" text="{FISCYEAR}"/>
<Label id="label6" text="Serial No"/>
<Text id="text6" text="{SerialNo}"/>
<Label id="label1" text="PoNumber"/>
<Text id="text1" text="{PoNumber}"/>
<Label id="label2" text="PoItem"/>
<Text id="text2" text="{PoItem}"/>
<Label id="label7" text="Ref Doc. No"/>
<Text id="text7" text="{RefDoc}"/>
<Label id="label8" text="RefDoc Item"/>
<Text id="text8" text="{RefDocIt}"/>
<Label id="label9" text="RefDoc Year"/>
<Text id="text9" text="{RefDocYear}"/>
<Label id="label10" text="Debit/Credit"/>
<Text id="text10" text="{DeCreInd}"/>
<Label id="label11" text="Tax Code"/>
<Text id="text11" text="{TaxCode}"/>
<Label id="label12" text="Taxjur code"/>
<Text id="text12" text="{Taxjurcode}"/>
<Label id="label13" text="Item Amount"/>
<Text id="text13" text="{ItemAmount}"/>
<Label id="label14" text="Quantity"/>
<Text id="text14" text="{Quantity}"/>
</f:content>
</f:SimpleForm>
</l:content>
</l:Grid>
</content>
</IconTabFilter>
</items>
</IconTabBar>
<Table id="ITEMDetails" class="navTableControlLayout"
growing="true" growingScrollToLoad="true">
<columns>
<Column width="10%" minScreenWidth="Tablet" demandPopin="true" hAlign="Left" vAlign="Top">
<Label text="Invoice Document"/>
</Column>
<Column width="5%" minScreenWidth="Tablet" demandPopin="true" hAlign="Left" vAlign="Top">
<Label text="Itemno"/>
</Column>
<Column width="4%" minScreenWidth="Tablet" demandPopin="true" hAlign="Left" vAlign="Top">
<Label text="Year"/>
</Column>
<Column width="10%" minScreenWidth="Tablet" demandPopin="true" hAlign="Left" vAlign="Top">
<Label text="Serial No."/>
</Column>
<Column width="10%" minScreenWidth="Tablet" demandPopin="true" hAlign="Left" vAlign="Top">
<Label text="PO No."/>
</Column>
<Column width="5%" minScreenWidth="Tablet" demandPopin="true" hAlign="Left" vAlign="Top">
<Label text="PO ITEM"/>
</Column>
<Column width="10%" minScreenWidth="Tablet" demandPopin="true" hAlign="Left" vAlign="Top">
<Label text="Ref. Doc"/>
</Column>
<Column width="10%" minScreenWidth="Tablet" demandPopin="true" hAlign="Left" vAlign="Top">
<Label text="Ref. Doc. ITEM"/>
</Column>
<Column width="10%" minScreenWidth="Tablet" demandPopin="true" hAlign="Left" vAlign="Top">
<Label text="Ref. Doc Year"/>
</Column>
<Column width="10%" minScreenWidth="Tablet" demandPopin="true" hAlign="Left" vAlign="Top">
<Label text="Tax Code"/>
</Column>
<Column width="10%" minScreenWidth="Tablet" demandPopin="true" hAlign="Left" vAlign="Top">
<Label text="Tax. Jur. Code"/>
</Column>
<Column width="10%" minScreenWidth="Tablet" demandPopin="true" hAlign="Left" vAlign="Top">
<Label text="ITEM Amount"/>
</Column>
<Column width="10%" minScreenWidth="Tablet" demandPopin="true" hAlign="Left" vAlign="Top">
<Label text="Quantity"/>
</Column>
</columns>
<ColumnListItem id="navigationListItem" type="Navigation" press="onLineItemPressed">
<cells id="cells">
<Text id="cells_cell1" text="{Invoicedocnumber}" />
<Text id="cell2" text="{InvoiceDocItem}" />
<Text id="cell3" text="{FISCYEAR}" />
<Text id="cell4" text="{SerialNo}" />
<Text id="cell5" text="{PoNumber}" />
<Text id="cell6" text="{PoItem}" />
<Text id="cell7" text="{RefDoc}" />
<Text id="cell8" text="{RefDocIt}" />
<Text id="cell9" text="{RefDocYear}" />
<!--<Text id="cell10" text="{DeCreInd}" /> -->
<Text id="cell11" text="{TaxCode}" />
<Text id="cell12" text="{Taxjurcode}" />
<Text id="cell13" text="{ItemAmount}" />
<Text id="cell14" text="{Quantity}" />
<!--<Text id="navigationListItem_cells_cell_3" text="{InvoiceDate}" /> -->
</cells>
</ColumnListItem>
</Table>
</content>
<footer>
<Toolbar>
</Toolbar>
</footer>
</Page>
</mvc:View>
Detail2 View
<mvc:View
controllerName="zfin.view.detail2"
xmlns:mvc="sap.ui.core.mvc"
xmlns:l="sap.ui.layout"
xmlns:f="sap.ui.layout.form"
xmlns:core="sap.ui.core"
xmlns:table="sap.ui.table"
xmlns="sap.m">
<Page
id="detailPage"
navButtonPress="onNavBack"
class="sapUiFioriObjectPage"
title="{i18n>detailTitle}">
<content>
<ObjectHeader
title="{Invoicedocnumber}"
select="onSelect"
number="{ItemAmount}" >
<attributes>
<ObjectAttribute
text="{InvoiceDocItem}"/>
</attributes>
<firstStatus>
<ObjectStatus
text="{FISCYEAR}"/>
</firstStatus>
</ObjectHeader>
<IconTabBar
select="onDetailSelect"
id="idIconTabBar">
<items>
<IconTabFilter
key="Details"
icon="sap-icon://hint">
<content>
<l:Grid
id="detailGrid"
defaultSpan="L12 M12 S12"
width="auto">
<l:content>
<f:SimpleForm
id="detailForm"
minWidth="1024"
maxContainerCols="2"
editable="false"
layout="ResponsiveGridLayout"
labelSpanL="3"
labelSpanM="3"
emptySpanL="4"
emptySpanM="4"
columnsL="1"
columnsM="1">
<f:content>
<!-- Manu Begin -->
<Label id="label3" text="Invoice Document22ss"/>
<Text id="text3" text="{Invoicedocnumber}" />
<Label id="label4" text="Invoice Itemno1111."/>
<Text id="text4" text="{InvoiceDocItem}"/>
<Label id="label5" text="YEAR"/>
<Text id="text5" text="{FISCYEAR}"/>
<Label id="label6" text="Serial No"/>
<Text id="text6" text="{SerialNo}"/>
<Label id="label1" text="PoNumber"/>
<Text id="text1" text="{PoNumber}"/>
<Label id="label2" text="PoItem"/>
<Text id="text2" text="{PoItem}"/>
<Label id="label7" text="Ref Doc. No"/>
<Text id="text7" text="{RefDoc}"/>
<Label id="label8" text="RefDoc Item"/>
<Text id="text8" text="{RefDocIt}"/>
<Label id="label9" text="RefDoc Year"/>
<Text id="text9" text="{RefDocYear}"/>
<Label id="label10" text="Debit/Credit"/>
<Text id="text10" text="{DeCreInd}"/>
<Label id="label11" text="Tax Code"/>
<Text id="text11" text="{TaxCode}"/>
<Label id="label12" text="Taxjur code"/>
<Text id="text12" text="{Taxjurcode}"/>
<Label id="label13" text="Item Amount"/>
<Text id="text13" text="{ItemAmount}"/>
<Label id="label14" text="Quantity"/>
<Text id="text14" text="{Quantity}"/>
</f:content>
</f:SimpleForm>
</l:content>
</l:Grid>
</content>
</IconTabFilter>
</items>
</IconTabBar>
</content>
<footer>
<Toolbar>
</Toolbar>
</footer>
</Page>
</mvc:View>
Detail2 Contorller...
sap.ui.core.mvc.Controller.extend("zfin.view.detail2", { | ||
onInit : function ( ) { | ||
this.oInitialLoadFinishedDeferred = jQuery.Deferred(); |
if(sap.ui.Device.system.phone) { | |||
//Do not wait for the master2 when in mobile phone resolution | |||
this.oInitialLoadFinishedDeferred.resolve(); | |||
} else { |
var oEventBus = this.getEventBus();
oEventBus.subscribe("Detail", "LoadFinished", this.onMasterLoaded, this); | |||
} |
this.getRouter().attachRouteMatched(this.onRouteMatched, this); |
// this.getView().byId("detail2").getBinding("items");
}, |
onMasterLoaded : function (sChannel, sEvent, oData) { | |||
if(oData.oListItem){ | |||
this.bindView(oData.oListItem.getBindingContext().getPath()); | |||
this.oInitialLoadFinishedDeferred.resolve(); | |||
} | |||
}, |
onRouteMatched: function(oEvent) { | ||
var oParameters = oEvent.getParameters(); |
jQuery.when(this.oInitialLoadFinishedDeferred).then(jQuery.proxy(function() { |
// When navigating in the Detail page, update the binding context | ||||
if (oParameters.name === "detail2") { | ||||
var sEntityPath = "/" + oParameters.arguments.entity; | ||||
this.bindView(sEntityPath); | ||||
} else { | ||||
return; | ||||
} | ||||
}, this)); |
if (oParameters.name === "detail2" && jQuery.device.is.phone) { | ||||
this.getRouter().myNavToWithoutHash({ | ||||
currentView: this.getView(), | ||||
targetViewName: "zfin.view.Detail2", | ||||
targetViewType: "XML", | ||||
transition: "slide" | ||||
}); | ||||
} | ||||
}, | ||||
// | showDetail : function(oItem) { | |||
// | // If we're on a phone device, include nav in history | |||
// | var bReplace = jQuery.device.is.phone ? false : true; | |||
// | this.getRouter().navTo("detail2", { | |||
// | from: "detail", | |||
// | entity: oItem.getBindingContext().getPath().substr(1) | |||
// | }, bReplace); | |||
// | }, |
bindView : function (sEntityPath) { | ||
var oView = this.getView(); | ||
// | oView.bindElement(sEntityPath); | |
oView.byID("ITEMDetails").setModel(sEntityPath); |
//Check if the data is already on the client | ||
if(!oView.getModel().getData(sEntityPath)) { |
// Check that the entity specified was found | ||||
var oData = oView.getModel().getData(sEntityPath); | ||||
if (!oData) { | ||||
this.showEmptyView(); | ||||
this.fireDetailNotFound(); | ||||
} else { | ||||
// this.getView().byId("idProductsTable").setModel(demoJSONModel); |
this.getView().byID("ITEMDetails").setModel(); | ||||
this.fireDetailChanged(sEntityPath); | ||||
} |
} else { | |||
this.fireDetailChanged(sEntityPath); | |||
} |
}, |
showEmptyView : function () { | |||
this.getRouter().myNavToWithoutHash({ | |||
currentView : this.getView(), | |||
targetViewName : "zfin.view.NotFound", | |||
targetViewType : "XML" | |||
}); | |||
}, |
fireDetailChanged : function (sEntityPath) { | ||
this.getEventBus().publish("Detail2", "Changed", { sEntityPath : sEntityPath }); | ||
}, |
fireDetailNotFound : function () { | ||
this.getEventBus().publish("Detail2", "NotFound"); | ||
}, |
onNavBack : function() { | ||
// This is only relevant when running on phone devices | ||
this.getRouter().myNavBack("main"); | ||
}, |
onDetailSelect : function(oEvent) { | |||
sap.ui.core.UIComponent.getRouterFor(this).navTo("detail2",{ | |||
entity : oEvent.getSource().getBindingContext().getPath().slice(1) | |||
}, true); | |||
}, | |||
onSelect : function(oEvent) { | |||
sap.ui.core.UIComponent.getRouterFor(this).navTo("detail2",{ | |||
entity : oEvent.getSource().getBindingContext().getPath().slice(1) | |||
}, true); | |||
}, | |||
// | onClick : function(oEvent) { | ||
// | sap.ui.core.UIComponent.getRouterFor(this).navTo("detail",{ | ||
// | entity : oEvent.getSource().getBindingContext().getPath().slice(1) | ||
// | }, true); | ||
// | }, | ||
// | rowSelectionChanged: function(oControlEvent) |
// {
// var selectedRowContext = oControlEvent.getParameter("detail");
// // var link = oControlEvent.getSource().getBindingContext();
// // var fr = oControlEvent.getBindingContext();
// // var ctx = oControlEvent.getBindingContext();
// sap.m.alert(selectedRowContext);
// },
// onLineItemPressed: function(oEvent) {
// sap.ui.core.UIComponent.getRouterFor(this).navTo("detail2",{
// | entity : oEvent.getSource().getBindingContext().getPath().slice(1) | ||
// | }, true); |
// },
getEventBus : function () { | ||
return sap.ui.getCore().getEventBus(); | ||
}, |
getRouter : function () { | ||
return sap.ui.core.UIComponent.getRouterFor(this); | ||
} |
});
Thanks in advance.
Manoj