SAP UI5 Formatter如何获取Cell Id?

时间:2016-08-03 15:02:44

标签: sapui5 formatter

通常,

会生成小区ID
this.getId

控制台写道:this.getId()不是函数

我有一个Datepicker;我在那里制作格式化程序:

<m:DatePicker value="{
            path: 'items>Lfdat', 
            type: 'sap.ui.model.type.Date', 
            formatter: '.formatter.getColour',

我也可以调试方法getColour但我不能使用this.getId()。

Formatter.js看起来像这样:

    getColour : function(sDate) {   
      var cell = this.getId() // is not a function
    }

有人知道我如何读取ID并因此更改背景颜色?

3 个答案:

答案 0 :(得分:1)

您没有获得Datepicker的ID,因为在Formatter.js this中,window对象表示不是datepicker。

最好为日期选择器提供ID。

<m:DatePicker id="myDate" value="{
           ...

然后在Formatter.js

getColour : function(sDate) {   
      var cell = sap.ui.getCore().byId("myDate");
      // now cell is the reference to your datepicker
    }

答案 1 :(得分:0)

@Mario格式化程序不会更改控件的格式,它仅用于格式化控件的属性。

我建议

您可以使用documentation

而不是设置表格单元格或DatePicker本身的背景颜色吗?
<m:DatePicker value="2016-Jan-08" valueState="{
                        path : 'name',
                        formatter : '.validate'}"/>

并且验证函数写在控制器中,如下所示

validate : function(name)
       {
           return sap.ui.core.ValueState.Error;
       }

答案 2 :(得分:-1)

@Tuhin,id不会有帮助,因为它在表格中

@Mario 你的&#34;这个&#34;是控制器,而不是细胞控制。 如果我理解正确的话,你可以做到这一点,以实现你所寻找的 示例基于ui表。不是桌子。  将代码放入onInit

   var someColumn = this.getView().byId("someColumn");
                someTemplate = someColumn .getTemplate();
                someTemplate .bindProperty("someproperty", {
                    parts : [{
                        path : 'somepath'
                    }, {
                        path : 'somepath1'
                    }],
                    formatter : Util.yourformatter
                });

如果你喜欢这样,你将获得正确的&#34;这个&#34;你想要格式化程序

added8.4

<m:DatePicker value="{
            path: 'items>Lfdat', 
            type: 'sap.ui.model.type.Date', 
            formatter: 'sap.ui.demo.tdg.util.Formatter.getColour',

this is example from sap, which defines a global formatter

//// formatter从这里开始

jQuery.sap.declare(&#34; sap.ui.demo.tdg.util.Formatter&#34);

sap.ui.demo.tdg.util.Formatter = {

getColor:function(){

//&#34;这&#34;将是datepicker

}

};

// formatter在这里结束

//将此行放入您的控制器

jQuery.sap.require(&#34; sap.ui.demo.tdg.util.Formatter&#34);

相应地更改名称空间。