在sap.ui.table.TreeTable模板

时间:2018-02-06 10:01:17

标签: sapui5

我一直在尝试在sap.ui.TreeTable中使用CustomData。我从我的ODataModel传递CustomData的值,但是我遇到了像

这样的错误
  

带有键cssColor的CustomData应写入Element sap.m.Text #__ text25 -__ clone22的HTML,但该值不是字符串。

所以我使用formatter将字符串传递给值:

<t:Column
  resizable="false"
  width="5.5rem"
  sortProperty="CMPlan"
>
  <t:multiLabels>
    <Text
      text="{i18n>currMonth}"
      textAlign="Center"
      width="100%"
      class="boldHeader"
    />
    <Text
      text="{i18n>plan}"
      textAlign="Center"
      width="100%"
      class="boldHeader"
    />
  </t:multiLabels>
  <t:template>
    <Text
      width="100%"
      text="{treeJSONModel>Plan}"
    >
      <customData>
        <core:CustomData
          key="cssColor"
          value="{
            path: 'treeJSONModel>colorCode',
            formatter: '.formatter.colorString'
          }"
          writeToDom="true"
        />
      </customData>
    </Text>
  </t:template>
</t:Column>

在我的格式化程序中,我有一个如下函数:

colorString: function(value) {
  if (value === "YELLOW") {
    return "YELLOW";
  } else {
    return "noColor";
  }
},

我得到的错误数量已减少,但我仍然在控制台中看到此错误

  

带有键cssColor的CustomData应写入Element sap.m.Text #__ text37 -__ clone40的HTML,但该值不是字符串。

非常感谢任何帮助我纠正这个问题的解决方案。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,发现了(快速和肮脏)处理错误的方法。

我按照你的方法做了一个格式化程序:

formatCell: function (iValue) {
        try {
            iValue.toString();
        } catch (err){
            iValue = "foo";
        }
        return iValue.toString();
    } 

基本上我强迫Value(以各种可能的方式)成为String ... 如果您在toString()上尝试null,则会抛出错误,因此我只需指定一个虚拟字符串...

如果您将null分配给customData

,我认为只会抛出错误