2017-10-28 215 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; 
}