由于读取UI5公共表的所有行的问题,并且表中的{
uri : "rtsp://[rtsp-address-as-published-on-the-app]",
streamTimeout:12000,
reconnectWaitTime:12000,
rtpTransportMode:"udp",
rtspValidationFrequency:15000,
rtspFilterUnknownTracks:true,
rtspStreamAudioTrack:false,
rtspStreamVideoTrack:true,
rtpDebugSession:true,
rtspSessionTimeout:12000,
rtspConnectionTimeout:12000
}
方法提供了模型。
我以为我可以使用JSONModel而不是我的ODataModel,现在的问题是如何将ODataModel转换为JSONModel。
因为JSON提供了一些有用的双向绑定选项。
我尝试读取一些set并将其绑定到JSONModel,问题是我无法将新模型绑定到视图中,因为它没有提供一些设置。
以下是我的代码片段。希望这应该更容易修复,因为读取所有表行:
getModel()
我看到表行绑定找到了它应该获得的正确数据长度,但是列绑定不起作用。这是行绑定的代码片段,然后是列
//Erstellung des Modells
var oModel2 = new sap.ui.model.odata.ODataModel(url, true, username, password);
var oModel = new JSONModel(jQuery.sap.getModulePath("QuickStartApplication.model", "/Search.json"));
oModel2.setSizeLimit(8000000);
var pspJSONModel = new sap.ui.model.json.JSONModel();
var oODataJSONModelDLSet = new sap.ui.model.json.JSONModel();
var oODataJSONModelProjectSet = new sap.ui.model.json.JSONModel();
var oODataJSONModelPSPset = new sap.ui.model.json.JSONModel();
var debitorJSONModel = new sap.ui.model.json.JSONModel();
this.getView().setModel(pspJSONModel, "jsonmodel2");
this.getView().setModel(oODataJSONModelDLSet, "jsonmodel");
this.getView().setModel(oODataJSONModelProjectSet, "jsonmodel3");
this.getView().setModel(oODataJSONModelPSPset, "jsonmodel4");
this.getView().setModel(debitorJSONModel, "jsonmodel5");
this.getView().setModel(oModel, "saves");
// etc
oModel2.read("/SEARCH_DLSet", null, null, false, function (oData, oResponse) {
oODataJSONModelDLSet.setData({ DLSet: oData });
});
oModel2.read("/Search_ProjectsSet", null, null, false, function (oData, oResponse) {
oODataJSONModelProjectSet.setData({ ProjectSet: oData });
});
oModel2.read("/SEARCH_PSPSet", null, null, false, function (oData, oResponse) {
oODataJSONModelPSPset.setData({ PSPset: oData });
});
oModel2.read("/DebitorSet", null, null, false, function (oData, oResponse) {
debitorJSONModel.setData({ DebitorSet: oData });
});
oModel2.read("/PSPSet", null, null, false, function (oData, oResponse) {
pspJSONModel.setData({ Pspset2: oData });
});
var json1 = pspJSONModel.getJSON();
var json2 = oODataJSONModelDLSet.getJSON();
此外,我的两个OData模型在sPath下获得了第一个绑定属性集合名称,但我的新属性不会获得此属性。
以下是调试中的一些屏幕:
OModel 1 with first property of binding
New Model with first property of binding but no right path
更新json结果的示例:
PSPSet:
<Text text="PSP(A-Nr.)" class="sapUiResponsiveMargin" ></Text>
<ComboBox id="combo1" items="{path: 'jsonmodel2>/Pspset2/results'}">
<core:Item key="{jsonmodel2>Psp}" text="{jsonmodel2>Psp}" />
</ComboBox>
<Text text="Abrechnungsstatus" class="sapUiResponsiveMargin" ></Text>
<ComboBox id="Abrechnungsstatus"></ComboBox>
</l:VerticalLayout>
</l:HorizontalLayout>
</l:VerticalLayout>
</l:HorizontalLayout>
</ScrollContainer>
</Panel>
<Panel visible="false" height="80%" width="98%" id="__layout15" class="__layout5">
<Button text="Edit" id="edit" type="Transparent" class="buttons" press="onEditRow"> </Button>
<t:Table class="table0" id="table1" selectionMode="MultiToggle" rows="{jsonmodel>/DLSet/results}">
<t:columns>
<t:Column class="columns" width="105px">
<Label text="Kontrakt Nr." id="lKontrakt" >
</Label>
<t:template>
<commons:TextField id="Kontrakt" editable="false" value="{jsonmodel>KontraktNr}" ></commons:TextField>
</t:template>
</t:Column>
和DLSet:
{
"Pspset2": {
"results": [
{
"__metadata": {
"id": "http://hvw-sapdev01.oms-sap.omnisys.de:8000/sap/opu/odata/SAP/Z_TBRKNPRO_SEARCH_DL_SRV/PSPSet('00014158001')",
"uri": "http://hvw-sapdev01.oms-sap.omnisys.de:8000/sap/opu/odata/SAP/Z_TBRKNPRO_SEARCH_DL_SRV/PSPSet('00014158001')",
"type": "Z_TBRKNPRO_SEARCH_DL_SRV.PSP"
},
"Psp": "00014158001"
},
{
"__metadata": {
"id": "http://hvw-sapdev01.oms-sap.omnisys.de:8000/sap/opu/odata/SAP/Z_TBRKNPRO_SEARCH_DL_SRV/PSPSet('00030173001')",
"uri": "http://hvw-sapdev01.oms-sap.omnisys.de:8000/sap/opu/odata/SAP/Z_TBRKNPRO_SEARCH_DL_SRV/PSPSet('00030173001')",
"type": "Z_TBRKNPRO_SEARCH_DL_SRV.PSP"
},
"Psp": "00030173001"
}
]
}
}
答案 0 :(得分:1)
由于您的代码似乎不太清楚,这里指出了如何实现它:
您将OData响应读入JSONModel:
var oModel2 = new sap.ui.odata.ODataModel();
var oODataJSONModelDLSet = new sap.ui.json.JSONModel();
this.getView().setModel(oODataJSONModelDLSet, "jsonmodel");
// etc
oModel2.read("/SEARCH_DLSet" + filterString, null, null, false, function (oData, oResponse) {
oODataJSONModelDLSet.setData({ DLSet: oData });
});
...然后绑定到您的视图:
<t:Table rows="{jsonmodel>/DLSet/results}">
<t:columns>
<t:Column>
<Label text="Kontrakt Nr." />
<t:template >
<commons:TextField value="{jsonmodel>KontraktNr}" />
</t:template>
</t:Column>
编辑:根据更新的问题更新了答案
答案 1 :(得分:0)
首先:您是否使用&#39; jsonmodel&#39;正确地将JSONModel附加到您的视图中?名称(因为你在表格的约束中引用它)
然后,你检查过oData对象的结构了吗?你问的是:
{ oData : { results : [... ] } }
最后在文本字段中,您没有引用&#39; jsonmodel&#39;再次,你应该放{jsonmodel&gt; KontraktNr}而不仅仅是{KontraktNr}