我想在sap.m表中读取用户所选行的列索引。我在调试期间尝试了几种方法但没有工作。我能够获取列而不是它的索引。
请找到下面附带的表格输出截图,我需要在用户选择任何值时捕获表格标题(季度名称)。
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>
答案 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>
...