Sapui5 CSS样式不能动态设置(单元格颜色)
我试图实现基于两个参数给出状态的要求。我能够获得最新状态,但无法获得细胞颜色 场景:Sapui5 CSS样式不能动态设置(单元格颜色),sapui5,Sapui5,我试图实现基于两个参数给出状态的要求。我能够获得最新状态,但无法获得细胞颜色 场景: Scenario # a b Final Status ---------- --------- --------- ----------------- 1) ""(Blank) ""(Blank) ""(Blank) 2) "Y" ""(Blank) "Y" 3)
Scenario # a b Final Status
---------- --------- --------- -----------------
1) ""(Blank) ""(Blank) ""(Blank)
2) "Y" ""(Blank) "Y"
3) "N" ""(Blank) "Y"
4) ""(Blank) "Y" "Y"(Yellow color)
5) ""(Blank) "N" "N"(Yellow color)
6) "Y" "Y" "Y"
7) "N" "N" "N"
8) "N" "Y" "Y"(Yellow color)
9) "Y" "N" "Y"(Yellow color)
XML代码:
<Text id="idStatus" text="{parts :['parameter','parameter1'],
formatter: '.formatter.availableColor'}"></Text>
CSS样式表:
.yellow {
background-color: #FFFF66 !important;
}
Json数据:
{
"parameter": "",
"parameter1": "Y",
}
要动态添加CSS类/更改单元格等内容的颜色,我通常找到的最佳解决方案是使用自定义数据 我在我的博客上写过这类事情 但要保存单击,您可以执行以下操作:
这将给您留下类似data color=“YN”
然后使用CSS,您可以添加:
[data color=“YN”]{
背景色:#FFFF66!重要;
}
这里是解决方法,如果有人有更好的解决方案,请分享
view.js
<Table items="{/items}" updateFinished="afterDataBinding">
<columns>
<Column> <Text text="Amount" /> </Column>
<Column> <Text text="Quantity" /> </Column>
<Column> <Text text="Weight" /> </Column>
<Column> <Text text="Status" /> </Column>
</columns>
<items>
<ColumnListItem>
<cells>
<Text text="{Amount}" />
<Text text="{Quantity}" />
<Text text="{Unit}" />
<Text text="{parts: ['parameter', 'parameter1'], formatter:'assets.util.mFormatter.formatTableCell'}" class="statusCell"></Text>
</cells>
</ColumnListItem>
</items>
</Table>
formatter.js
afterDataBinding: function(oEvent) {
$("td:has(span.tableCellYellow)").addClass("yellowCell");
},
formatTableCell: function (available, available1) {
var oText = this,
sReturnValue = "";
if ((available === "" && available1 === "") ||
(available === "Y" && available1 === "Y") ||
(available === "N" && available1 === "N") ) {
if (oText.hasStyleClass("tableCellYellow") ){
oText.removeStyleClass("tableCellYellow");
}
} else if (
(available === "" && available1 === "Y") ||
(available === "Y" && available1 === "") ||
(available === "N" && available1 === "") ||
(available === "" && available1 === "Y") ||
(available === "" && available1 === "N") ||
(available === "Y" && available1 === "N") ||
(available === "N" && available1 === "Y")) {
if (!oText.hasStyleClass("tableCellYellow") ){
oText.addStyleClass("tableCellYellow");
}
sReturnValue = available + " - " + available1;
}
return sReturnValue;
},
CSS
.yellowCell {
background-color: #FFFF66 !important;
}
输出
如果你考虑遵循FiRI设计准则/最佳实践,请看一看。其中还指出:
有关状态信息,请使用 尝试使用支持语义颜色的控件,而不是使用自定义CSS为整个单元格着色,例如 下面是一个根据规则集显示表格的演示:我使用的是-sap.m表格您在这里做了正确的事情,将您博客文章中的相关信息包含在您的答案中。我只是提醒你不要做得太多。即使你遵守规则,过多的自我推销也会被认为是垃圾邮件。有关详细信息,请参阅:嗨,Nathan,谢谢你的帮助,但没有帮助。我仍然无法在场景中提到的正确文本上获得正确的颜色。@Oyo您得到了什么结果?使用自定义数据,您应该可以在DOM中看到绑定的结果,因此,您可以看到什么不起作用。
.yellowCell {
background-color: #FFFF66 !important;
}