2016-04-15 9 views
0

コントローラ上でnullデータをバインドするかどうかを確認しようとしています。データがnullの場合、バインドされたデータだけでなくラベルも表示する必要があります。コントロールにバインドされたテキストがヌルであることを確認してください。

以下は現在私のコードです。

var oMatNrRow1 = new sap.ui.commons.layout.MatrixLayoutRow(); 
    control1 = new sap.ui.commons.Label({ 
    text : Appcc.getText("MATERIAL_NO") + ":" 
}); 

matrixCell1 = new sap.ui.commons.layout.MatrixLayoutCell(); 
matrixCell1.addContent(control1); 
control = new sap.ui.commons.Label(); 
control.bindProperty("text", "matnr"); 

matrixCell1.addContent(control); 
oMatNrRow1.addCell(matrixCell1); 
vendorTable.addRow(oMatNrRow1); 

私はcontrol.getProperty( "text")を試しましたが、matnrがnullでない場合に数値を返す必要がある場合はnullを返します。

また、フォーマッタも試しました。 matnrがnullでない場合は、フォーマッタに問題はありません。しかし、nullの場合は、両方のmatrixCell1インスタンスの内容を破棄/削除することが重要です。以下のコードでは、matrixCell1コンテンツの追加は引き続き行われます。あなたは内部のFFコードを移動することができるかどう

... 
formatter: function(matnr){ 
    if (matnr !== ''){ 
     return contract 
    } else{ 
     matrixCell.destroyContent(); 
    } 
}); 

matrixCell1.addContent(control); 
oMatNrRow1.addCell(matrixCell1); 
vendorTable.addRow(oMatNrRow1); 

わからない声明

matrixCell1.addContent(control); 
oMatNrRow1.addCell(matrixCell1); 
vendorTable.addRow(oMatNrRow1); 

任意のアイデアが高く評価されている場合。

+1

両方のコントロールのvisibleプロパティをmatnrにバインドするほうが、もっと簡単になります: 'control.bindProperty(" visible "、{path:" matnr "、formatter:function(matnr){return !! matnr; }}); '。本当にコントロールを破壊する必要がありますか? – schnoedel

+0

問題の回避策を見つけましたが、これも試してみます。これを共有していただきありがとうございます。 – melai

答えて

1

また私はユーザーにvisibleプロパティを提案します。 UI5の条件付きバインディングを認識していますか?その場合、フォーマッタは必要ありません。 see

+0

ありがとうございます。それをチェックします。 – melai

0

問題の回避方法が見つかりました。それは単純なif else条件でした。 ifステートメントの場合、データ[j] .matnrを追加しました。出来た!また、これはSAPがどのように行動を実装したかにも気づいた。 oSearchViewData.description。

関連する問題