读取ui5应用程序

时间:2018-04-19 13:44:41

标签: javascript sapui5

我想在sap.m表中读取用户所选行的列索引。我在调试期间尝试了几种方法但没有工作。我能够获取列而不是它的索引。

请找到下面附带的表格输出截图,我需要在用户选择任何值时捕获表格标题(季度名称)。

enter image description here

header.controller.js

sap.ui.define([
	"sap/ui/core/mvc/Controller",
	"sap/ui/model/Filter",
	"NPAWRMA/model/formatter",
	"sap/ui/model/FilterOperator"
], function(Controller, Filter, formatter, FilterOperator) {
	"use strict";

	return Controller.extend("NPAWRMA.controller.header", {
		formatter: formatter,
		onInit: function(evt) {

		},
		onPress: function(oeve) {
		debugger;	
		var selcbu = oeve.getSource().getBindingContext("odata").getProperty("KTEXT");
		var otable = oeve.getSource().getTable("table");
		var ocolumn = otable.getColumns();

		}
	});
});

header.view.xml

<mvc:View controllerName="NPAWRMA.controller.header" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:mvc="sap.ui.core.mvc"
  displayBlock="true" xmlns="sap.m" xmlns:l="sap.ui.layout">
  <App id="idAppControl">
    <pages>
      <Page title="NPAW RMA Report">
        <content>
          <l:VerticalLayout>
            <Table id="table" growing="true" items="{odata>/npirevSet}">
              <columns>
                <Column>
                  <Text text="CBU" id="CbuShortNameColumnTitle"/>
                </Column>
                <Column>
                  <Text text="{Labels>/Labels1/Label01}"/>
                </Column>
                <Column>
                  <Text text="{Labels>/Labels1/Label02}"/>
                </Column>
                <Column>
                  <Text text="{Labels>/Labels1/Label03}"/>
                </Column>
                <Column>
                  <Text text="{Labels>/Labels1/Label04}"/>
                </Column>
                <Column>
                  <Text text="{Labels>/Labels1/Label05}"/>
                </Column>
                <Column>
                  <Text text="{Labels>/Labels1/Label06}"/>
                </Column>
                <Column>
                  <Text text="{Labels>/Labels1/Label07}"/>
                </Column>
                <Column>
                  <Text text="{Labels>/Labels1/Label08}"/>
                </Column>
              </columns>
              <items>
                <ColumnListItem type="Active" press="onPress">
                  <cells>
                    <Text text="{odata>KTEXT}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc01', formatter: '.formatter.numberUnit' }"  state="{State01}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc02', formatter: '.formatter.numberUnit' }"  state="{State02}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc03', formatter: '.formatter.numberUnit' }"  state="{State03}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc04', formatter: '.formatter.numberUnit' }"  state="{State04}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc05', formatter: '.formatter.numberUnit' }"  state="{State05}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc06', formatter: '.formatter.numberUnit' }"  state="{State06}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc07', formatter: '.formatter.numberUnit' }"  state="{State07}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc08', formatter: '.formatter.numberUnit' }"  state="{State08}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc09', formatter: '.formatter.numberUnit' }"  state="{State09}"/>
                  </cells>
                </ColumnListItem>
              </items>
            </Table>
            <Table id="table1" class=".table1" growing="true" items="{odata>/npirevSet}">
              <columns>
                <Column>
                  <Text text="CBU" id="CbuShortNameColumnTitle1"/>
                </Column>
                <Column>
                  <Text text="{Labels>/Labels1/Label01}"/>
                </Column>
                <Column>
                  <Text text="{Labels>/Labels1/Label02}"/>
                </Column>
                <Column>
                  <Text text="{Labels>/Labels1/Label03}"/>
                </Column>
                <Column>
                  <Text text="{Labels>/Labels1/Label04}"/>
                </Column>
                <Column>
                  <Text text="{Labels>/Labels1/Label05}"/>
                </Column>
                <Column>
                  <Text text="{Labels>/Labels1/Label06}"/>
                </Column>
                <Column>
                  <Text text="{Labels>/Labels1/Label07}"/>
                </Column>
                <Column>
                  <Text text="{Labels>/Labels1/Label08}"/>
                </Column>
              </columns>
              <items>
                <ColumnListItem type="Active">
                  <cells>
                    <Text text="{odata>KTEXT}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc01', formatter: '.formatter.numberUnit' }" unit="%" state="{State01}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc02', formatter: '.formatter.numberUnit' }" unit="%" state="{State02}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc03', formatter: '.formatter.numberUnit' }" unit="%" state="{State03}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc04', formatter: '.formatter.numberUnit' }" unit="%" state="{State04}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc05', formatter: '.formatter.numberUnit' }" unit="%" state="{State05}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc06', formatter: '.formatter.numberUnit' }" unit="%" state="{State06}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc07', formatter: '.formatter.numberUnit' }" unit="%" state="{State07}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc08', formatter: '.formatter.numberUnit' }" unit="%" state="{State08}"/>
                    <ObjectNumber number="{ path: 'odata>NpiPerc09', formatter: '.formatter.numberUnit' }" unit="%" state="{State09}"/>
                  </cells>
                </ColumnListItem>
              </items>
            </Table>
          </l:VerticalLayout>
        </content>
      </Page>
    </pages>
  </App>
</mvc:View>

2 个答案:

答案 0 :(得分:1)

我不知道你究竟是什么意思&#34;我想读取列索引&#34;但是如果你想知道在选择表格行时你点击了哪一列,那么从API的角度来看,我认为它是不可能的

sap.m.Table是一个ListBase控件。 sap.m.ColumnListItem是一个ListItemBase控件。因此,他们按列表顺序处理事件。这只与行相关。

我看到的唯一方法是处理每个内部控件中的事件,并从中获取自定义数据。否则,您的点击事件的来源将是行或表,但没有关于您点击的内部元素的信息

答案 1 :(得分:0)

如何@ rafael-lópez-martínez说你无法控制桌面事件。但是如果您使用按钮,链接或某些具有新闻事件的控件,您可以这样做。

我对plunker做了一个快速的样本抱歉,但我没有太多时间。我复制了一些plunker并改变它。所以可以有一些陌生的东西。

控制器:

onPress: function(oeve) {
  oeve.getSource().getCustomData()[0].getKey();
  oeve.getSource().getCustomData()[0].getValue();

    }

查看:

...
<ColumnListItem type="Active" >
    <cells>
    <Button text="{Name}" type="Transparent" app:colHeader="Col Text"         press="onPress"/>
    <Text text="{SupplierName}" maxLines="0"></Text>
    <Text text="{Width} x {Depth} x {Height} {DimUnit}" maxLines="0"></Text>
...

http://plnkr.co/edit/wtnnuk