2016-08-03 85 views
0

通常將由SAP UI5格式化程序如何獲取單元ID?

this.getId 

控制檯寫入來生成小區ID: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等改變背景顏色?

回答

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 
    } 
+0

這不起作用 var cell = this.getView()。byId(「myDate」); cell.addStyleClass(「red」); return sDate; 我在Index.html中創建樣式你有提示嗎? – Mario

-1

@Tuhin,ID也無濟於事,因爲它是在表

@Mario 你的 「本」 是控制器,而不是細胞控制。 你可以做到這一點,以達到你想要的東西,如果我正確理解你的 例子是基於UI表。不是米桌子。 把代碼中的OnInit

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

,如果你不喜歡這樣,你會得到正確的 「這個」 你想在格式化

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 

// //格式化程序從這裏開始

jQuery.sap.declare(「sap.ui.demo.tdg.util.Formatter」);

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

getColor:function(){ 

// 「這個」 將是日期選擇器

}

};

//格式化到此爲止

//把這個線在你的控制器

jQuery.sap.require( 「sap.ui.demo.tdg.util.Formatter」);

相應地更改名稱空間。

+0

對不起,我不明白。我應該在哪裏寫這段代碼?我將在格式化程序中獲得Id。 – Mario

+0

我想將顏色綁定到某些單元格的背景 – Mario

+0

http://scn.sap.com/community/developer-center/front-end/blog/2016/08/02/dynamic-cell-color-color-如果你想爲單元格着色,這個博客將幫助 –

0

@Mario格式化程序不會更改控件的格式,它僅用於格式化控件的屬性。

我建議

而不是設置背景顏色的表格單元格或DatePicker的本身,你可以使用sap.ui.core.ValueState

<m:DatePicker value="2016-Jan-08" valueState="{ 
         path : 'name', 
         formatter : '.validate'}"/> 

和驗證功能是寫在控制器如下

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

我試了一下,但是程序並沒有進入驗證狀態,你有哪些驗證方法?首先,他啓動桌面初始化的格式化程序? – Mario

+0

驗證方法我寫在視圖的控制器中。如果它從「。」開始。意味着它應該是控制器.. – chiranjeevigk