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;
}