ComboBox值未显示在XML视图中

时间:2019-12-27 04:02:23

标签: sapui5

在我的exports_list = [file for file in os.listdir(self.export_folder) if file.endswith('.csv')] if not exports_list: print('Script will now terminate. Check log for more details.\n') with open(self.log, 'a+') as file: file.write(f'{dt.datetime.now()}:\n') file.write('No .csv files found in bmf_exports folder.\n') file.write('\nFile(s) not found or was not accessible.\n') raise ValueError('No .csv files found in bmf_exports folder.') try: dates = [dateutil.parser.parse(item, fuzzy=True) for item in exports_list] except ValueError: print('Parser not able to extract dates from file names.\n') print('Script will now terminate. Check log for more details.\n') with open(self.log, 'a+') as file: file.write(f'{dt.datetime.now()}:\n') file.write('Parser was not able to extract date(s) from file names.\n') file.write('Make sure export file names include date in format: ') file.write('yyyymmdd ') sys.exit() 文件中,我实例化了OData模型并将其设置为Component.js

"donorList"

在视图控制器的var oDonorTable = new ODataModel(sServiceUrl/*, ...*/); // ODataModel required from "sap/ui/model/odata/v2/ODataModel" this.setModel(oDonorTable, "donorList"); 中,我从后端读取值并将其设置为JSONModel:

onInit

在我的XML视图中,我将oData值绑定到XML视图中的ComboBox:

var oDnrDoc = this.getOwnerComponent().getModel();
oDnrDoc.read("/DonorDocs", {
    success: function(oData) {
        var oDonorDocList =  new JSONModel(); // JSONModel required from "sap/ui/model/json/JSONModel"
        oDonorDocList.setData(oData);
        this.getView().setModel(oDonorDocList, "donorList");
    }.bind(this),
    // ...
});

我有九个键值对来自后端OData服务,用于实体集“ DonorDocs”。但是,在XML视图中进行渲染时,从下拉列表中进行选择后,尽管组合框下拉列表中填充了9条记录,但我在视图中看不到结果(仅显示空值)。

Empty dropdown display (nine records)

我可以感觉到一些绑定问题...花括号中的动态变量是否引起问题?有语法问题吗?

2 个答案:

答案 0 :(得分:1)

由于您已将模型命名为bot1.send_message(chat_id=chat_id, text="<a href='https://mail.ru/'><i>URL</i></a>", parse_mode="HTML") ,因此必须在绑定中使用该名称。

donorList

答案 1 :(得分:1)

  

在控制器的onInit中,我从后端读取值并将其设置为JSONModel [...]。
  我可以感觉到一些有约束力的问题。有语法问题吗?

添加模型名称({donorList>DocCode})应该可以解决Dommy的答案中提到的问题,但是应该更加关注一些问题:缺少ODataModel的现有功能,但要尝试重新使用-使用JSONModel来实现它们。

具有JSON格式的OData响应可能很想使用JSONModel处理数据,但是我想强调一下 JSONModel是一种客户端模型。< / strong>这是一个简单的模型实现,它不知道服务实现建议的任何合同(例如OData或FHIR)。

ODataModel是一种服务器端模型,专门为处理OData标准(V2或V4)的应用程序而构建。这可能会花费很多工作。例如,在我们的示例中,只需绑定实体集而无需中间JSONModel:

<!-- "donorList" == ODataModel -->
<!-- "DonorDocs" == entity set name -->
<ComboBox items="{donorList>/DonorDocs}">
  <c:ListItem key="{donorList>DocCode}" text="{donorList>DocDesc}" />
</ComboBox>
<!-- No oODataModel.read(...) in the controller -->

ODataListBinding(源自items="{donorList>/DonorDocs}")将为您格式化并自动发送请求。


在使用简单的JSONModel构建整个应用程序之前,请继续探索UI5对OData的作用。