Как показать предложение по элементу управления sap.m.input в SAPUI5 - PullRequest
0 голосов
/ 23 февраля 2019

Я новичок в SAPUI5, и у меня есть требование, в котором я должен показать предложение по элементу управления sap.m.input.Я пытаюсь сделать это с предложением события, но я не получаю никаких предложений и никаких ошибок.Насколько я знаю, предложить событие покажет предложение на ввод пользователя.Если мой код работает неправильно, пожалуйста, дайте мне знать, что я должен исправить, чтобы заставить его работать.

XML:

<Label id='idDocLbl' text="" />
<Input id = "iddocNo" width="450px" 
          placeholder = "Enter Doc No ..."
          showSuggestion="true"
          showValueHelp = "true"
          valueHelpRequest = "handleDocValueHelp"
          enabled="true" change = "handleDocChange"
          valueState = "None"
          suggest = "handleDocSuggest">
</Input>

Контроллер:

handleDocSuggest: function (oEvent) {
        var that = this;
        var inputId = oEvent.getSource().getId();
        var displayModel = sap.ui.getCore().getModel("displayModel");
        var oSource = displayModel.getProperty("/sourceView");
        var systemId = displayModel.getProperty("/systemId");
        var compCode = displayModel.getProperty("/compCode");
        var type = displayModel.getProperty("/type");
        var prdId = this.getView().byId("idPrdid").getValue();
        var viewname = oSource + "HDView";
        var viewDependent = '';
        var docField = sap.ui.getCore().getModel("configModel").getProperty("/docField");
        sap.ui.getCore().getModel("displayModel").setProperty("/docField", docField);
        var docid = this.getView().byId("iddocNo");
        docid.setModel(displayModel);

        oEvent.oSource.bindAggregation("suggestionItems", "/" + oSource, new sap.ui.core.ListItem({
            text: "{" + docField + "}",
            growing: true,
            key: "{" + docField + "}"
        }));
        that._handleSuggest(oEvent, docField, viewDependent);
    },

    _handleSuggest: function (osuggest, viewkey, viewDependent) {
        var lValue = osuggest.getParameter("suggestValue").toUpperCase();
        var displayModel = sap.ui.getCore().getModel("displayModel");
        var oSource = displayModel.getProperty("/sourceView");
        var systemId = displayModel.getProperty("/systemId");
        var compCode = displayModel.getProperty("/compCode");
        var type = displayModel.getProperty("/type");
        var prdId = this.getView().byId("idPrdid").getValue();
        var filterArray = [];
        filterArray.push(new sap.ui.model.Filter(viewkey, sap.ui.model.FilterOperator.Contains, lValue));
        filterArray.push(new sap.ui.model.Filter("SYSTEM_ID", "EQ", systemId));
        filterArray.push(new sap.ui.model.Filter("COMPANY_CD", "EQ", compCode));
        filterArray.push(new sap.ui.model.Filter("DATA_CRCTN_TYP_CD", "EQ", type));
        filterArray.push(new sap.ui.model.Filter("NGTL_WORKFLOW_STATUS", "NE", "Y"));
        if (viewDependent.length > 0) {
            var inputdepend_value;
            inputdepend_value = this.getView().byId("idSystemId").getValue();
            var oDepFilter = new sap.ui.model.Filter(viewDependent, sap.ui.model.FilterOperator.EQ, inputdepend_value);
            var oDepFinal = [];
            oDepFinal.push(oDepFilter);
            oDepFinal.push(oFilter);

            osuggest.getSource().getBinding("suggestionItems").filter(oDepFinal);
        } else {
            osuggest.getSource().getBinding("suggestionItems").filter([filterArray]);
        }
    },

1 Ответ

0 голосов
/ 04 апреля 2019

Если я правильно понимаю вашу проблему, вы не получаете предложения для показа.Похоже, у вас уже есть элементы в модели, поэтому вы можете установить агрегацию непосредственно для элемента xml.

   <Input id = "iddocNo" width="450px" 
          placeholder = "Enter Doc No ..."
          showSuggestion="true"
          showValueHelp = "true"
          valueHelpRequest = "handleDocValueHelp"
          enabled="true" change = "handleDocChange"
          valueState = "None"
          suggest = "handleDocSuggest"
          suggestionItems="{displayModel>/sourceView}">
          <suggestionItems>
                <core:Item key="{key}" text="{Name}" />
          </suggestionItems>
  </Input>

Таким образом, если у вас есть элементы в заданном вами пути к модели, вы должны получить список для всплывающего окна.Ключ в

<suggestionItems>
    <core:Item key="{key}" text="{Name}" />
</suggestionItems>

передается в событии, и вы можете использовать fron там.

Надеюсь, я помогаю.

...