OPENUI5-如何从sap.m.Input的suggestionRows中获取所选行

OPENUI5 - How to get the selected row from suggestionRows of sap.m.Input?

本文关键字:suggestionRows 获取 Input sap OPENUI5-      更新时间:2023-09-26

我正在努力从sap.m.Input的suggestionRows中获取所选行的所有列。我在jsbin中的以下链接下创建了一个示例http://jsbin.com/debavixazu/4/edit?html,控制台,输出有人能教我如何从suggestionRows中获取所选行吗。非常感谢。

谨致问候,赤丹

请运行并检查以下代码片段。基本上,您可以从所选行中获取DataModel和BindingContextPath。

<script src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js" id="sap-ui-bootstrap" data-sap-ui-theme="sap_bluecrystal" data-sap-ui-libs="sap.m"></script>
<script>
  var oInput = new sap.m.Input('js-input', {
    value: '',
    type: sap.m.InputType.Text,
    showValueHelp: true,
    showSuggestion: true,
    placeholder: "Search ..",
    suggestionColumns: [
      new sap.m.Column({
        header: new sap.m.Label({
          text: 'Device'
        })
      }),
      new sap.m.Column({
        header: new sap.m.Label({
          text: 'Enabled'
        })
      })
    ],
    suggestionItemSelected: function(oEvent) {
      var oSelectedItem = oEvent.getParameters("selectedItem");
      //console.log(oSelectedItem);   
      var oSelectedRow = oSelectedItem.selectedRow;
      var oModel = oSelectedRow.getModel("myModel");
      var oPath = oSelectedRow.getBindingContextPath();
      alert(oModel.getProperty(oPath + "/device") + " " + oModel.getProperty(oPath + "/enabled"));
      //alert(oSelectedItem);
    }
  });
  var oModel = new sap.ui.model.json.JSONModel();
  oModel.setData({
    hardware: [{
      device: "PC",
      enabled: true
    }, {
      device: "Monitor",
      enabled: true
    }, {
      device: "Keyboard",
      enabled: false
    }, {
      device: "Mouse",
      enabled: true
    }, {
      device: "Speaker",
      enabled: false
    }, {
      device: "Scanner",
      enabled: true
    }, {
      device: "Printer",
      enabled: true
    }]
  });
  sap.ui.getCore().setModel(oModel, 'myModel');
  oColumnListItem = new sap.m.ColumnListItem({
    cells: [
      new sap.m.Label({
        text: '{myModel>device}'
      }),
      new sap.m.Label({
        text: '{myModel>enabled}'
      })
    ]
  });
  oInput.bindAggregation("suggestionRows", "myModel>/hardware", oColumnListItem);
  oInput.placeAt('content');
</script>
<body>
  <div id='content'></div>
</body>