- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个对象,我正在将它绑定(bind)到我的表,但是通常情况下,正如我所看到的那样,绑定(bind)的工作方式无处不在;你把你的东西绑定(bind)到列上。
我能否以某种方式将其更改为绑定(bind)到 Rows ?
我知道我能做并且一直习惯做的是;
在我看来:
var vergleichTable1 = new sap.m.Table(this.createId("vergleichTable1"), {
columns: [
new sap.m.Column({
header: new sap.m.Label({
text: "Header Text 1"
})
}),
new sap.m.Column({
header: new sap.m.Label({
text: "Header Text 2"
})
}),
new sap.m.Column({
header: new sap.m.Label({
text: "Header Text 3"
})
}),
]
}).addStyleClass("vergleichTable1");
我正在添加某事。像这样进入我的 Controller ;
var oTemplate1 = new sap.m.ColumnListItem({
cells: [
new sap.m.Text({
text: "{KEYNAME}"
}),
new sap.m.Text({
text: "{KEYNAME}"
}),
new sap.m.Text({
text: "{KEYNAME}"
})
]
});
和连接:
this.byId("vergleichTable1").setModel(mymodel).bindItems("/foo/0", oTemplate1);
但是正如我提到的,我需要一些不同的东西。我不想将它绑定(bind)到列而是绑定(bind)到行,ui5 API 中没有关于它的信息。
这里有一些东西可以让我更容易理解我需要的东西
我希望拥有与我的 object keys.length
我该怎么做?
最佳答案
如果我理解了问题,下面是您想要的结果:(如果不理解,请通知我以便更正/删除我的答案)。如果您可以粘贴示例数据,那就最好了。
第一:数据:
var selProps = [
"Prop1", "Prop2", "Prop3" // Selected Properties stored in an array
];
var data = [ // Data, data, data ( with all properties)
{
phone:"Moto G",
"Prop1": "Prop1-1",
"Prop2" :"Prop1-2",
"Prop3": "Prop1-3",
"Prop4" :"Prop1-4"
},
{
phone:"Moto X",
"Prop1": "Prop2-1",
"Prop2" :"Prop2-2",
"Prop3": "Prop2-3",
"Prop4" :"Prop2-4"
},
{
phone:"iPhone",
"Prop1": "Prop3-1",
"Prop2" :"Prop3-2",
"Prop3": "Prop3-3",
"Prop4" :"Prop3-4"
},
{
phone:"G Pixel 2",
"Prop1": "Prop4-1",
"Prop2" :"Prop4-2",
"Prop3": "Prop4-3",
"Prop4" :"Prop4-4"
}
];
输出:
代码:查看:
var oTable = new sap.m.Table();
var oColTemplate = new sap.m.Column({
header: new sap.m.Text({
text: "{phone}"
})
});
oTable.bindAggregation("columns", "/data", oColTemplate);
oTable.bindItems("/selProps", function(sId, oContext) {
var aCells = [];
var oModel = oContext.getModel();
var aCols = oModel.getProperty("/data"); // Fetch No of columns. Create that many Texts.
for (var index = 0 ;index < aCols.length; index++) {
// data will be stored in : /data/index/selected Property(present in oContext)
var oText = new sap.m.Text({
text : "{/data/" + index + "/" + oContext.getProperty() +"}"
});
aCells.push(oText);
}
return new sap.m.ColumnListItem({
cells: aCells
});
}.bind(oTable));
return new sap.m.Page({
title: "Title",
content: [
oTable
]
});
Controller :
onInit: function() {
var selProps = [
"Prop1", "Prop2", "Prop3" // Selected Properties stored in an array
];
var data = [ // Data, data, data ( with all properties)
{
phone:"Moto G",
"Prop1": "Prop1-1",
"Prop2" :"Prop1-2",
"Prop3": "Prop1-3",
"Prop4" :"Prop1-4"
},
{
phone:"Moto X",
"Prop1": "Prop2-1",
"Prop2" :"Prop2-2",
"Prop3": "Prop2-3",
"Prop4" :"Prop2-4"
},
{
phone:"iPhone",
"Prop1": "Prop3-1",
"Prop2" :"Prop3-2",
"Prop3": "Prop3-3",
"Prop4" :"Prop3-4"
},
{
phone:"G Pixel 2",
"Prop1": "Prop4-1",
"Prop2" :"Prop4-2",
"Prop3": "Prop4-3",
"Prop4" :"Prop4-4"
}
];
var oModel = new sap.ui.model.json.JSONModel({data: data, selProps: selProps});
this.getView().setModel(oModel);
},
阅读更多关于工厂函数的信息:Factory Functions
更新:显示空列和行。
第 1 步:添加空列:
现在,在上面的示例中,我们将列直接绑定(bind)到当前数据。这将随着必须添加额外的列(在开头)而改变。
因此,将其粘贴到读取数据的位置(在我下面的手动 JSON 数据设置示例中)。请记住,每次读取新数据时都必须这样做:
新的 INIT 函数:
onInit: function() {
var selProps = [
...// same as above: To reduce post length
];
var data = [ ...// same as above: To reduce post length];
var oModel = new sap.ui.model.json.JSONModel({data: data, selProps: selProps});
this.getView().setModel(oModel);
this.fnBindColumns(); // Call function to create columns
},
fnBindColumns : function() {
var oTable = this.byId('idTable');
var aData = this.getView().getModel().getProperty("/data");
var oPropCol = new sap.m.Column({
header: new sap.m.Text({
text: ""
})
});
oTable.addColumn(oPropCol);
for(var i = 0; i <aData.length ; i++ ) {
var oCol = new sap.m.Column({
header: new sap.m.Text({
text : "{/data/" + i + "/phone}"
})
});
oTable.addColumn(oCol);
}
}
第 2 步: 添加属性行。这迫使改变我们的工厂功能。因此,在我们的 JS View 中创建内容:
var oTable = new sap.m.Table({
id: this.createId("idTable") // Look Id added
});
oTable.bindItems("/selProps", function(sId, oContext) {
var aCells = [];
var oModel = oContext.getModel();
var aCols = oModel.getProperty("/data");
for (var index = 0 ;index < aCols.length + 1; index++) { // length = no of mobile phones + 1 ( +1 for extra property row).
if (index == 0) { // add the property Text if first column
var oText = new sap.m.Text({
text : oContext.getProperty()
});
} else {
var oText = new sap.m.Text({
text : "{/data/" + (index-1) + "/" + oContext.getProperty() +"}" // bind the text via absolute path.
});
}
aCells.push(oText);
}
return new sap.m.ColumnListItem({
cells: aCells
});
}.bind(oTable));
新表:
希望这对您有所帮助。
关于javascript - ui5 将项目绑定(bind)到 TableRows 而不是 TableColumns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46956009/
我正在开始使用 mongodb。 我已经设置了所有的 mongodb 和 mongoose 配置,它们工作得很好。 以下是项目文件: server.js: const TableRow = requi
我正在开发 Android 应用程序。一个 Activity 有一个像这样的 TableLayout:
我非常接近选择 LinearLayout 替代方案,但没有正确处理这件事有点令人恼火。为了获得最大的灵 active ,我定义了一个只定义了行标题的 TableLayout xml。接下来,我生成了一
我正在将大量书面内容转换为 Android 应用程序上易于阅读的页面。此内容主要由文本和图像组成,但也包括表格。 内容下载为 html,因此我使用 Html.fromHtml() 方法和 URLIma
我正在尝试将 TableRows 添加到 TableLayout,效果非常好。但是,我在布局参数方面遇到了一些问题。 TableRow 中 TextView 之间的间距与我想象的不一样。 我当前的代码
好的,所以我尝试在每次点击按钮时以编程方式将 TableRows 插入到 TableLayout 中。这些行中的每一行都包含一个设置为某个字符串的 TextView。我的问题是,虽然 TableRow
我是新手,很难达到我要求的输出。代码://这段代码在ScrollView里面 Java 代码: setContentView(R.layout.status_view
我在处理 TableRow 显示时发现问题请给我适当的解决方案 在我的 Java 文件中 tr1 = (TableRow)findViewById(R.id.facebook_raw); tr
我有一个包含 3 个 TableRow 的 TableLayout,每个 TableRow 有 3 个 ImageView。每个 ImageView 都有适合比例类型的 fitCenter,以及每个计
所以,我在一个 xml 文件中有一个 TableLayout 和 4 个 TableRow。我还有一个定义 TextView 的 xml 文件,它将插入行中(每行 3 个 TextView)。我希望那
我的布局是这样的:
我有一个 TableLayout,我在其中动态添加行,一开始是空的,我想在用户单击它时在该行中加载一个 xml。 我已经给行赋值了OnClick方法,但是不知道在onclick方法中进入时如何加载xm
如何在 android TableRow 中获取第一列值并将该值传递给下一个 Activity ?例如,在我的 android Activity 中,我有一个 TableRow,每行有 3 列(节点
我正在尝试使用 TableLayout 制作复杂的网格。我设法通过这样的 xml 来实现(网格中的某些框未突出显示): 通过这段代码:
我正在动态生成 TableRow。对于每个 TableRow,一列中有一个 TextView,另一列中有一个 EditText。如何生成行,使 TextView 占据行的一半而 EditText 占据
我有一个 TableRow 和一个 TextView。这是它的 xml。 我想让表格行在触摸按钮时具有淡出效果,反之亦然。我该怎么做? 最佳答案 任何 View(包括 Tabl
我有以下问题跨越动态添加行到 ScrollView 内的 TableLayout。行遵循以下模式: 第 1 行:单元格横跨整个表格 第 2 行:两个单元格 第 3 行:单元格横跨整个表格 ... 第
我正在尝试为 Android 远程控制制作一个 XML 文件。我用过 TableLayout 正如您从屏幕截图中看到的那样,列的大小发生了变化(但所有图像的大小都相同)。问题仅在于那一行。 这是我的代
我当前有以下设置: ' > 这几乎就是我想要编写的代码: function setBGColor() { var table = document.getElemen
我已从源 REST 端点读取 JSON 数据,并将其写入 BigQuery 表。我想让 BigQuery 表属性更具可读性,即。从 src_lat 到 source_latitude 等... 我已经
我是一名优秀的程序员,十分优秀!