sapui5 передать параметр в диалоговое окно справки по значениям smartFilterBar ControlConfiguration

У меня на странице есть SmartFilterBar на основе сервиса oData. В одном из фильтруемых полей есть диалоговое окно справки по значениям. Когда открывается диалоговое окно справки по значению, мне нужно заполнить один из параметров поиска в этом диалоговом окне справки по значению. Как я могу это сделать? Я не могу получить диалоговое окно справки по значениям с помощью элемента управления, потому что «метод byId ()» теперь не имеет идентификатора созданного диалогового окна.


person Ильдар Мурзенков    schedule 28.10.2017    source источник
comment
Если вы используете смарт-фильтр (на основе аннотаций), он должен работать прямо из коробки, поэтому вам не нужно вмешиваться с вашей стороны, чтобы передать значение полю. Возможно, что-то не так с аннотациями.   -  person Andrii Naumovych    schedule 29.10.2017
comment
Да теперь прямо из коробки работает корректно. Но мне нужно автоматически заполнить один из параметров поиска в открывшемся диалоговом окне. Как на скриншоте: prnt.sc/h3ek1m   -  person Ильдар Мурзенков    schedule 29.10.2017
comment
@ ИльдарМурзенков Я понял вашу проблему, если бы это было SmartField в форме, было бы легко предварительно заполнить диалоговое окно VH с помощью аннотаций, но я не знаю, как это сделать в FilterBar. Возможно там должна быть аннотация, которая мне не известна, вы должны ее найти. Другое решение взлома - получить этот диалог по идентификатору - для этого вам нужно проверить HTML, сгенерированный ui5, и получить оттуда идентификатор.   -  person Andrii Naumovych    schedule 29.10.2017
comment
@ Андрей Наумович Спасибо за ответ. Я уже пробовал взломать сгенерированный id элемента HTML. Он работает в развивающейся системе, но в другой системе диалоговое окно управления имеет другой идентификатор, поэтому этот хак для меня не применим.   -  person Ильдар Мурзенков    schedule 29.10.2017


Ответы (1)


Я нашел решение: как я могу получить идентификатор открытого значения helpdialog: в случае «onValueHelpRequest» я переигрываю метод «onAfterRendering» класса «sap.ui.comp.valuehelpdialog.ValueHelpDialog», и в этом методе я могу получить идентификатор диалог:

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;
}
person Ильдар Мурзенков    schedule 29.10.2017