2017-10-28 209 views
0

我在基於oData服務的頁面上有SmartFilterBar。其中一個可篩選字段具有價值幫助對話框。當值幫助對話框打開時,我需要在此值幫助對話框中填寫搜索參數之一。我怎樣才能做到這一點?我無法通過控件獲取值幫助對話框,因爲「byId()方法」我現在不會創建對話框的id。sapui5將參數傳遞給值smartFilterBar的幫助對話框ControlConfiguration

+0

如果您使用的智能過濾(基於註解),它應該工作的權利開箱,所以從你身邊不需要干預交給值場。或許,註釋有些問題。 –

+0

是的,現在它正確地開箱即用。但我需要在打開的對話框中自動填充搜索參數中的一個。在屏幕截圖中一樣:https://prnt.sc/h3ek1m –

+0

@ИльдарМурзенков我理解你的問題,如果它是一個窗體中的SmartField,它將很容易通過註釋預填充VH對話框,但我不知道該怎麼做在FilterBar中。大概這裏有一個註釋,這個註釋對我來說是不爲人知的,你必須找到它。其他的「黑客」解決方案就是通過id來獲得這個對話框 - 做到這一點,你需要檢查由ui5生成的HTML並從中獲取Id。 –

回答

0

我找到了解決辦法:我怎樣才能打開valuehelpdialog的ID: 倘若「onValueHelpRequest」我redigine類此方法的「sap.ui.comp.valuehelpdialog.ValueHelpDialog」和「onAfterRendering」我的方法可以得到對話框的ID:

filterInitialize: function() { 
    var oDogovorControl = this.getView().byId("smartFilterBar").getControlByKey("Dogovor"); 
    oDogovorControl.attachValueHelpRequest(this.onValueHelpRequest, this); 
}, 
onValueHelpRequest: function() { 
    sap.ui.comp.valuehelpdialog.ValueHelpDialog.prototype.test = sap.ui.comp.valuehelpdialog.ValueHelpDialog.prototype.onAfterRendering; 
    var fntest2 = function(oEvent){ 
         this.test(); 
         console.log(this.getId()); 
        }; 
    sap.ui.comp.valuehelpdialog.ValueHelpDialog.prototype.onAfterRendering = fntest2; 
}