2017-09-04 6 views
2

結果は、テキストコントロールで最初に表示され、Odataからロードされ、入力コントロールに表示される価格、数量が掛けられます。目標は、新しい価格と新しい数量が入力コントロールに入力された後、そのテキストコントロールで結果が自動的に更新されることです。 _onChange()では、ODataのプロパティ(この場合は価格と数量)を変更することができます(私は更新されたプロパティと結果をデバッガモジュールで見てきました)。しかし、更新された結果はText Controlに表示されません。だれかがアイデアを持っていますか?JSおよびXMLを使用してテキストコントロールのOData値を変更

XML:

<t:Column> 
    <Text text="Price"/> 
    <t:template> 
     <Input id="price" value="{Prc}" editable="true" change="_onChange"/> 
    </t:template> 
</t:Column> 
<t:Column> 
    <Text text="Quantity"/> 
    <t:template> 
     <Input id="quantity" value="{Qty}" editable="true" change="_onChange"/> 
    </t:template> 
</t:Column> 

JS:

_onChange: function(oEvent){ 
    var test = oEvent.getSource(); 
    var path = test.getBindingContext().getPath(); 
    var obj = oModel.getProperty(path); 

    var stringID=test.sId; 
    //determine the current control using the predefined ID 
    switch(oEvent!=null){ 
    case stringID.match("quantity")!=null 
     //read the Input of quantity in Input control 
     obj.Qty = test._$input.context.value; 
     break; 
    case stringID.match("price")!=null: 
     //read the input of price in Input control 
     obj.Prc = test._$input.context.value; 
     break; 
}; 
var sum = parseInt(obj.Prc) * parseInt(obj.Qty); 
obj.Result =sum.toString(); 
} 

答えて

0

私はこの問題を解決しました。 問題はコントロールIDが動的に生成されたため(この場合は例:id="__xmlview1--TBL_ep")、入力用に定義したコントロールID(この場合はid="quantity")がoEventによって見つからなかったことです。この動的IDを確定するには、var oSTBL_EP = this.getView().byId("quantity");を使用し、oSTBL_EPのsIdプロパティを呼び出す必要があります。 有効なIDの場合のみ、その値をテキストコントロールに表示することができます

1

あなたはモデルを更新するためにそれを使用、モデルに結果をバインドしている場合。

関連する問題