操作表格最后一行的图标属性。

问题描述 投票:0回答:1

在XML视图中,对于我来说有.NET Framework 2.0和.NET Framework 3.0。

<Table id="testtable" xmlns="sap.ui.table"
  rows="{/testdata}"
  alternateRowColors="true">
  <columns>
    <Column hAlign="Center" label="Col1">
      <template>
        <m:Text text="{dataX}" wrapping="false" />
      </template>
    </Column>
    <Column hAlign="Center" label="Col2">
      <template>
        <m:Text text="{dataY}" wrapping="false" />
      </template>
    </Column>
    <Column label="Col3">
      <template>
        <m:HBox>
<core:Icon src="sap-icon://show" color="{ parts : [ 'test'], formatter: '.setIconColour'}" />
<core:Icon src="sap-icon://edit" color="{ parts : [ 'test' ], formatter: '.setIconColour'}" />
<core:Icon src="sap-icon://print" color="{ parts : [ 'test' ], formatter: '.setIconColour'}" />
        </m:HBox>
      </template>
    </Column>
  </columns>
</Table>

在controller中(formatter函数为as)。

setIconColour: function (value) {
 if (value === 1) {
    return "#007bff";
  } else if (value === 2) {
    return "Positive";
  } else if (value === 3) {
    return "Negative";
  } 
}

示例数据为:

{"testdata": [
    { "dataX": 1, "dataY": "testdata", "test": 0},
    { "dataX": 2, "dataY": "testdata", "test": 2},
    { "dataX": 3, "dataY": "testdata", "test": 3},
    { "dataX": 4, "dataY": "testdata", "test": 1}
]}

这将改变图标属性的颜色基于 test 在这之后,我可以知道,如果只有一行存在,我如何改变只有最后一行图标或(只有一行)的颜色(其他所有的图标都有相同的属性,根据formatter函数)。

Image of table with icons is as

我试图做到这一点作为。

      var tabItems = this.byId("testtable").getRows(); 

      var cells = tabItems[testdata.length-1].getCells(); // get last row cells

      cells[8].mAggregations.items[0].setColor(
      "#000000");  // at this path i have all 3 icons and trying to set color here (items[0],items[1],items[2] --> 3 icons)

但是,这种方法并不像预期的那样给奇怪的结果,直到页面刷新,希望会有一个更好的方法,任何帮助或指导性的链接是非常感激的TIA

sapui5
1个回答
1
投票

也许你可以给你的JSON添加索引,然后你可以给你的formatter提供JSON的索引和长度。

JSON是这样的。

{"testdata": [
    { index: 1, "dataX": 1, "dataY": "testdata", "test": 0},
    { index: 2, "dataX": 2, "dataY": "testdata", "test": 2},
    { index: 3, "dataX": 3, "dataY": "testdata", "test": 3},
    { index: 4, "dataX": 4, "dataY": "testdata", "test": 1}
]}

Formatter:

setIconColour: function (value, index, length) {
 // 
}
© www.soinside.com 2019 - 2024. All rights reserved.