私の会社のSAPUI5アプリケーションを開発していますが、XMLベースのビューでOData(ナビゲーション付き)を使用することに問題があります。それについていくつかの記事がありましたが、私はそれを展開プロパティで動作させることができません。 (私はのJsベースのビューでそれをしようとした場合、それが動作)SAPUI5 XMLビューとVizFrameのOData(ナビゲーション付き)グラフナビゲーション
のmetadata.xml
<edmx:Edmx Version="1.0" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx">
<edmx:DataServices m:DataServiceVersion="1.0" m:MaxDataServiceVersion="3.0" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<Schema Namespace="TEST_SRV" xmlns="http://schemas.microsoft.com/ado/2008/09/edm">
<EntityType Name="ISSUE_B">
<Key>
<PropertyRef Name="B" />
</Key>
<Property Name="B" Type="Edm.String" Nullable="false" MaxLength="40" FixedLength="false" Unicode="true" />
<Property Name="NbI" Type="Edm.Int32" Nullable="false" />
<Property Name="K1" Type="Edm.String" Nullable="false" MaxLength="40" FixedLength="false" Unicode="true" />
<Property Name="I1" Type="Edm.Int32" Nullable="false" />
<Property Name="K2" Type="Edm.String" Nullable="false" MaxLength="40" FixedLength="false" Unicode="true" />
<Property Name="I2" Type="Edm.Int32" Nullable="false" />
<NavigationProperty Name="B2AB_NAV" Relationship="TEST_SRV.B2AB_ASS" FromRole="FromRole_B2AB_ASS" ToRole="ToRole_B2AB_ASS" />
</EntityType>
<EntityType Name="ISSUE_AB">
<Key>
<PropertyRef Name="CId" />
<PropertyRef Name="B" />
</Key>
<Property Name="B" Type="Edm.String" Nullable="false" MaxLength="40" FixedLength="false" Unicode="true" />
<Property Name="CId" Type="Edm.String" Nullable="false" Unicode="true" />
<Property Name="Open" Type="Edm.Int32" Nullable="false" Unicode="true" />
<Property Name="Closed" Type="Edm.Int32" Nullable="false" Unicode="true" />
</EntityType>
<Association Name="B2AB_ASS">
<End Type="TEST_SRV.ISSUE_B" Multiplicity="0..1" Role="FromRole_B2AB_ASS" />
<End Type="TEST_SRV.ISSUE_AB" Multiplicity="*" Role="ToRole_B2AB_ASS" />
<ReferentialConstraint>
<Principal Role="FromRole_B2AB_ASS">
<PropertyRef Name="B" />
</Principal>
<Dependent Role="ToRole_B2AB_ASS">
<PropertyRef Name="B" />
</Dependent>
</ReferentialConstraint>
</Association>
</Schema>
<Schema Namespace="ODataWebV2.My.Model" xmlns="http://schemas.microsoft.com/ado/2008/09/edm">
<EntityContainer Name="TEST_SRV_Entities" m:IsDefaultEntityContainer="true" p6:LazyLoadingEnabled="true" xmlns:p6="http://schemas.microsoft.com/ado/2009/02/edm/annotation">
<EntitySet Name="ISSUE_BSet" EntityType="TEST_SRV.ISSUE_B" />
<EntitySet Name="ISSUE_ABSet" EntityType="TEST_SRV.ISSUE_AB" />
<AssociationSet Name="B2AB_ASSSet" Association="TEST_SRV.B2AB_ASS">
<End EntitySet="ISSUE_BSet" Role="FromRole_B2AB_ASS" />
<End EntitySet="ISSUE_ABSet" Role="ToRole_B2AB_ASS" />
</AssociationSet>
</EntityContainer>
</Schema>
</edmx:DataServices>
</edmx:Edmx>
ビュー( 'マイデータ' はマニフェストで定義されている私のODataのモデルである)
<core:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" xmlns:semantic="sap.m.semantic" xmlns:footerbar="sap.ushell.ui.footerbar" xmlns:viz="sap.viz.ui5.controls" xmlns:viz.data="sap.viz.ui5.data" xmlns:viz.feeds="sap.viz.ui5.controls.common.feeds"
xmlns:suite="sap.suite.ui.commons" controllerName="test.controller.DetailView" xmlns:html="http://www.w3.org/1999/xhtml" height="100%">
<Page id="detail1" title="{i18n>detailTitle}" showFooter="true" enableScrolling="false" showNavButton="true" navButtonPress="onNavBack">
<content>
<ObjectHeader title="{myData>B}" number="{myData>NbI}" numberUnit="{i18n>numberUnit}" />
<suite:ChartContainer id="idChartContainer" showFullScreen="true" showPersonalization="false" autoAdjustHeight="false" showLegend="true">
<suite:toolbar>
<OverflowToolbar id="appToolbar">
<suite:ChartContainerToolbarPlaceholder/>
</OverflowToolbar>
</suite:toolbar>
<suite:content>
<suite:ChartContainerContent icon="sap-icon://bar-chart" title="Column Chart">
<suite:content>
<viz:VizFrame uiConfig="{applicationSet:'fiori'}" id="oVizFrame1" vizType="column" width="100%" selectData="onClickVizFrame">
<viz:dataset>
<viz.data:FlattenedDataset data="{
path:'myData>/ISSUE_BSet',
parameters: {expand: 'B2AB_NAV'}
}">
<viz.data:dimensions>
<viz.data:DimensionDefinition name="Customer" value="{myData>B2AB_NAV/CId}" />
</viz.data:dimensions>
<viz.data:measures>
<viz.data:MeasureDefinition name="Closed" value="{myData>B2AB_NAV/Closed}" />
<viz.data:MeasureDefinition name="Open" value="{myData>B2AB_NAV/Open}" />
</viz.data:measures>
</viz.data:FlattenedDataset>
</viz:dataset>
<viz:feeds>
<viz.feeds:FeedItem uid="valueAxis" type="Measure" values="Open" />
<viz.feeds:FeedItem uid="valueAxis" type="Measure" values="Closed" />
<viz.feeds:FeedItem uid="categoryAxis" type="Dimension" values="Customer" />
</viz:feeds>
</viz:VizFrame>
</suite:content>
</suite:ChartContainerContent>
</suite:content>
</suite:ChartContainer>
</content>
<footer>
<Toolbar>
<content>
<ToolbarSpacer>
</ToolbarSpacer>
<Button id="__button1" icon="sap-icon://action" press="handlePopoverShare" />
</content>
</Toolbar>
</footer>
</Page>
</core:View>
コントローラ
sap.ui.define([
"test/controller/BaseController",
"sap/ui/model/json/JSONModel",
"sap/ui/model/Filter",
"sap/ui/model/FilterOperator"
], function(BaseController, JSONModel, Filter, FilterOperator) {
"use strict";
return BaseController.extend("test.controller.DetailView", {
onInit: function() {
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.getRoute("select").attachMatched(this._onRouteMatched, this);
},
_onRouteMatched: function(oEvent) {
var oArgs = oEvent.getParameter("arguments");
var oView = this.getView();
var oChart = oView.byId("oVizFrame2");
oChart.bindElement({
path: "/" + oArgs.domain,
model: "myData",
expand: "B2AB_NAV"
});
oView.bindElement({
path: "/" + oArgs.domain,
model: "myData",
events: {
change: this._onBindingChange.bind(this),
dataRequested: function(oEvent) {
oView.setBusy(true);
},
dataReceived: function(oEvent) {
oView.setBusy(false);
}
}
});
},
_onBindingChange: function(oEvent) {
// No data for the binding
if (!this.getView().getBindingContext("myData")) {
this.getRouter().getTargets().display("notFound");
}
},
onClickVizFrame: function(oEvent) {
var oItem = oEvent.getSource();
// Get data \t
var clickedCol = oEvent.getSource().vizSelection()[0].data["_context_row_number"]
var oChart = this.getView().byId("oVizFrame1");
var aContexts = oChart.getDataset().getBinding("data").getContexts();
var sPath = aContexts[clickedCol].getPath().substr(1); //selected binding context
// Clear VizFrame Selection
var action = {
clearSelection: true
};
oItem.vizSelection("", action);
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.navTo("detail", {
data: sPath
});
},
onNavBack: function() {
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.navTo("initial", true);
}
}
});
さらに私はVizFrameチャートを用いて詳細にナビゲートしたいと思いますが、私はBindingContextをパスを取得しようとするとクリックしたときに、それが唯一せずに私のナビゲーション・パスを提供します前のパス。助けを事前に
感謝:)
EDIT:あなたが最初のグラフが動作しない2ページ目(XML)が、第2に移動したときに
を見ることができるように1(js)はそうです。 BindingContextが変更されているため、3番目のページへの移動は機能しません。私はあなたが直面する問題を固定し、ここで変更plunkerへのリンクになってきました
私が見られるように、あなたはチュートリアルに精通していると仮定し、[ここ](https://sapui5.hana.ondemand.com/#docs/guide/44062441f3bd4c67a4f665ae362d1109.html) とは[こちら](HTTPS: //sapui5.hana.ondemand.com/explored.html#/sample/sap.m.tutorial.walkthrough.26/preview)? コンソールにエラーメッセージが表示されますか? plunkr(plnkr.co)のようなツールにサンプルを投稿して、デバッグを簡単にすることができれば助かります。 –
はい私はウォークスルーチュートリアル全体を完了しました。私は "偽の" ODataサービスを使ってモックサーバーを作成しましたが、ナビゲーションは機能していないようです。 ViewをJSファイルとして実装すると、それも機能し、OData Navigationを使用しますが、XMLではexpandプロパティでは機能しません。私はいくつかの例では、plunkrの例を投稿します。返信ありがとう –
例を追加しました:) –