mergeDuplicates ="真"在MultiSelect模式下无法正常工作

时间:2017-08-24 08:57:02

标签: sapui5

我想在Multi Select表中实现mergeDuplicates,就像guideline所说:

enter image description here

但在我的DEMO中,我的复选框中仍有边框顶部,我该怎么办?我不想覆盖UI5 CSS。

<Table
    id="table"
    mode="MultiSelect"
    growingScrollToLoad="true">
    <columns>
        <Column mergeDuplicates="true"><Text text="column1"/></Column>
        <Column><Text text="column2"/></Column>
        <Column><Text text="column3"/></Column>
    </columns>
</Table>

2 个答案:

答案 0 :(得分:2)

恕我直言,mergeDuplicates的概念与单元格内容绑定,因此不会扩展到选择器单元格。但显然,指南和控制概念并不完全匹配。

我建议稍微修改Ash Kander的提议。由于该表可能会在不同的时间点单独呈现单个ColumnListItem,因此附加到表的onAfterRendering将无济于事。

而是使用委托附加到项目的onAfterRendering。为了使其完全有效,在数据绑定开始克隆该模板之前,您必须尽早在项目的模板上执行此操作。

在您的DEMO中,在您创建和附加模型之前onInit可以轻松实现这一点(我为模板提供了ID“cli”):

this.byId("cli").addEventDelegate({
  onAfterRendering: function(e) {
    var $dom = e.srcControl.$();
    if ( $dom.has(".sapMListTblCellDup") ) {
      $dom.find("td.sapMListTblSelCol").css("border-topcolor",
          "transparent");
    }
  }
});

请参阅http://plnkr.co/edit/eNb83KvF1BpAp5eGSpOS?p=preview

答案 1 :(得分:1)

看起来像表格渲染器中的错误。你无法在不触及CSS的情况下解决它。

这会有效,但这会覆盖css(在你的控制器中):

onAfterRendering: function() {
    $('.sapMListTblSelCol').each(function(index, col) {
        if ($(col).next().hasClass('sapMListTblCellDup')) {
            $(col).css('border-top-color', 'transparent')
        }
    });
},