0
我在基于oData服务的页面上有SmartFilterBar。其中一个可筛选字段具有价值帮助对话框。当值帮助对话框打开时,我需要在此值帮助对话框中填写搜索参数之一。我怎样才能做到这一点?我无法通过控件获取值帮助对话框,因为“byId()方法”我现在不会创建对话框的id。sapui5将参数传递给值smartFilterBar的帮助对话框ControlConfiguration
我在基于oData服务的页面上有SmartFilterBar。其中一个可筛选字段具有价值帮助对话框。当值帮助对话框打开时,我需要在此值帮助对话框中填写搜索参数之一。我怎样才能做到这一点?我无法通过控件获取值帮助对话框,因为“byId()方法”我现在不会创建对话框的id。sapui5将参数传递给值smartFilterBar的帮助对话框ControlConfiguration
我找到了解决办法:我怎样才能打开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;
}
如果您使用的智能过滤(基于注解),它应该工作的权利开箱,所以从你身边不需要干预交给值场。或许,注释有些问题。 –
是的,现在它正确地开箱即用。但我需要在打开的对话框中自动填充搜索参数中的一个。在屏幕截图中一样:https://prnt.sc/h3ek1m –
@ИльдарМурзенков我理解你的问题,如果它是一个窗体中的SmartField,它将很容易通过注释预填充VH对话框,但我不知道该怎么做在FilterBar中。大概这里有一个注释,这个注释对我来说是不为人知的,你必须找到它。其他的“黑客”解决方案就是通过id来获得这个对话框 - 做到这一点,你需要检查由ui5生成的HTML并从中获取Id。 –