在ui5中使用odata服务中的数据创建动态表
我是sap ui5的新手 我正在尝试在sap web ide中生成的网页上生成一个表。 此表的数据是通过odata服务访问的.json文件 我走了这么远: oModel生成于:在ui5中使用odata服务中的数据创建动态表,odata,sapui5,Odata,Sapui5,我是sap ui5的新手 我正在尝试在sap web ide中生成的网页上生成一个表。 此表的数据是通过odata服务访问的.json文件 我走了这么远: oModel生成于: function initModel() { var sUrl = "/sap/opu/odata/sap/ZGWS_someService/CollectionSet?$format=json"; var oModel = new sap.ui.model.odata.ODataModel(sUrl,
function initModel() {
var sUrl = "/sap/opu/odata/sap/ZGWS_someService/CollectionSet?$format=json";
var oModel = new sap.ui.model.odata.ODataModel(sUrl, true);
sap.ui.getCore().setModel(oModel);
}
现在,我想在我的html站点上生成一个表,其中包含.json文件中的数据。
因此,我必须根据项目的属性创建列,然后用当前数据填充行
.json如下所示:
{
"d": {
"results": [
{
"property1": "123",
"property2": "346"
},
{
"property1": "123",
"property2": "555"
}
我还没有解决办法,你能帮我吗
格里茨,
simon我在控制器中创建了表,并通过lodash对数据进行排序 这是好的做法吗
var oTable = this.byId("table");
oTable.addColumn(new sap.ui.table.Column({
label: new sap.ui.commons.Label({
text: "Info1"
}),
sortProperty: "INTST",
template: new sap.ui.commons.TextView().bindProperty("text", "key")
}));
oTable.addColumn(new sap.ui.table.Column({
label: new sap.ui.commons.Label({
text: "Count"
}),
template: new sap.ui.commons.TextView().bindProperty("text", "value")
}));
$
.ajax({
url: '/.../ServiceSet',
jsonpCallback: 'getJSON',
contentType: "application/json",
dataType: 'json',
success: function(data, textStatus, jqXHR) {
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData(data);
sap.ui.getCore().setModel(oModel);
//Create a model and bind the table rows to this model
//Get the forecastday array table from txt_forecast object
var aData = oModel.getProperty("/d/results");
var aData2 = _.countBy(_.map(aData, function(d) {
return d.VALUE;
}));
var aData3 = Object.keys(aData2).sort().map(key => ({
key,
value: aData2[key]
}));
oModel.setData({
modelData: aData3
});
oTable.setModel(oModel);
}
});
oTable.bindAggregation("rows", {
path: "/modelData"
});
欢迎来到UI5世界!首先,您选择了什么样的模板来生成项目?因为
initModel
中的每一行都很糟糕。如果您刚刚开始使用UI5,我建议您从文档中的开始(因为我想您已经熟悉JS),而不是使用过时的模板。也可能对其他学习资源有所帮助。我使用了sap ui5应用程序模板。initmodel函数是通过单击new->odata服务生成的,我甚至没有自己编写它。这不是正确的方法?initModel()很好,但它应该指向整个服务,而不是单独的“CollectionSet”->类似于var sUrl=“/sap/opu/odata/sap/ZGWS\u someService/”
。然后,您必须使用表控件创建一个视图,并在表上绑定CollectionSet。有很多教程解释了这样的简单例子。演练中有一个关于如何使用odata模型的页面:->我建议阅读整个演练,正如Boghyon所说的为什么initModel()
很糟糕:[第1行]因为服务URL指向一个实体集。查询$format=json“
是多余的,因为ODataModel
的第二个参数是获取json数据的标志。[第2行]您使用的模型是。[第3行]我想知道模板是从哪里获得的。它是来自Web IDE的模板吗?