我尝试将来自OData服务 CUAN_CAMPAIGN_SRV 的广告系列数据绑定到TableSelectDialog元素。在我看来,我有一个带输入帮助的输入字段:
<form:FormElement visible="true">
<form:label>
<Label text="Campaign" design="Standard" width="100%" required="false" textAlign="Begin" textDirection="Inherit"/>
</form:label>
<form:fields>
<Input id="campaignId" type="Text" enabled="true" visible="true" width="auto" editable="true" showValueHelp="true" valueHelpOnly="true" valueHelpRequest="handleValueHelp"/>
</form:fields>
值帮助调用我的控制器中的函数 handleValueHelp :
handleValueHelp: function(oController) {
this.inputId = oController.oSource.sId;
// create value help dialog
if (!this._valueHelpDialog) {
this._valueHelpDialog = sap.ui.xmlfragment(
"my.view.Campaigns",
this
);
this.getView().addDependent(this._valueHelpDialog);
}
// open value help dialog
this._valueHelpDialog.open();
}
这时我的表格对话框(片段)会弹出:
<core:FragmentDefinition xmlns="sap.m" xmlns:core="sap.ui.core">
<TableSelectDialog id="campaignSelect" title="Select campaign" items="{path:'/CampaignSet'}" growingThreshold="5">
<columns>
<Column>
<Text text="Name"/>
</Column>
<Column>
<Text text="ID"/>
</Column>
<Column>
<Text text="Created at"/>
</Column>
<Column>
<Text text="Created by"/>
</Column>
</columns>
<items>
<ColumnListItem>
<Text text="{CampaignName}"/>
<Text text="{CampaignId}"/>
<Text text="{CreatedOn}"/>
<Text text="{CreatedBy}"/>
</ColumnListItem>
</items>
</TableSelectDialog>
所以我尝试将EntataSet CampaignSet 从OData服务CUAN_CAMPAIGN_SRV绑定到表。因此,我将此代码添加到控制器的 init()函数中:
var uname = "UNAME";
var pw = "PW";
var oModel = new sap.ui.model.odata.v2.ODataModel("https://host:port/sap/opu/odata/sap/CUAN_CAMPAIGN_SRV/",
true, uname, pw);
this.getView().setModel(oModel);
问题是:该表中没有数据,并且此错误显示在控制台中:
翻译自德语:“在数据服务环境中发生了未知的内部服务器错误”
iwfnd / error_log说明了这一点:
格式无效(返回表):行号1,属性名称 'ChangedOn',属性值'0'
如果我不想绑定此属性,为什么ChangedOn会起作用?
我可以在浏览器中直接调用之类的内容并成功:
https://host:port/sap/opu/odata/sap/CUAN_CAMPAIGN_SRV/CampaignSet( '100001625')/ CAMPAIGNNAME
我做错了什么?谢谢你的每一个提示!
在服务定义中将ChangedOn设置为Nullable: