天天看点

如何从 SAP Fiori Elements List Report Table 点击事件响应函数里拿到表格某一行的信息

订阅专栏

如下图所示,我按照这篇文章 如何在 SAP Fiori Elements List Report 表格工具栏里增添新的自定义按钮 里介绍的方式,在 SAP Fiori Elements List Report 应用的 table 工具栏里,添加了一个自定义按钮:

如何从 SAP Fiori Elements List Report Table 点击事件响应函数里拿到表格某一行的信息

下一步,我期望选中某行表项后,点击该按钮,能弹出对应表项的一些数据。

所以问题的焦点,就是如何从按钮的点击处理函数 onCustomAction1 的输入参数 oEvent 里,获得当前表格里被选中的数据。

如何从 SAP Fiori Elements List Report Table 点击事件响应函数里拿到表格某一行的信息

我们从 oEvent 变量触发:

如何从 SAP Fiori Elements List Report Table 点击事件响应函数里拿到表格某一行的信息

oEvent.oSource 指向当前触发事件的 UI 控件,即 自定义按钮控件:

如何从 SAP Fiori Elements List Report Table 点击事件响应函数里拿到表格某一行的信息

按钮的 parent 是 toolbar:

如何从 SAP Fiori Elements List Report Table 点击事件响应函数里拿到表格某一行的信息

Toolbar 的 parent 就是整个响应式 table 了:

如何从 SAP Fiori Elements List Report Table 点击事件响应函数里拿到表格某一行的信息

调用 getSelectedItem() 拿到当前选中行:

如何从 SAP Fiori Elements List Report Table 点击事件响应函数里拿到表格某一行的信息

这个 ColumnListItem 包含了当前选中行的所有列。

调用其 getCells 方法,得到 8 个 Table Columns 的实例:

如何从 SAP Fiori Elements List Report Table 点击事件响应函数里拿到表格某一行的信息
如何从 SAP Fiori Elements List Report Table 点击事件响应函数里拿到表格某一行的信息
如何从 SAP Fiori Elements List Report Table 点击事件响应函数里拿到表格某一行的信息

从其 sId 大致能辨识出每个 Column 代表的含义,或者直接根据其 index 也就是索引,也能判断出。比如第一个元素,是 product image column,而第二个元素 vbox,是一个复合控件,Vertical Box. 第三个元素,是一个 Text 控件,Product Category.

取得 Product Category 的代码比较简单:

如何从 SAP Fiori Elements List Report Table 点击事件响应函数里拿到表格某一行的信息

先使用 getItems 拿到 vertical box 包含的所有数据:

如何从 SAP Fiori Elements List Report Table 点击事件响应函数里拿到表格某一行的信息

然后再逐一访问每条数据实例,调用 getText 即可获得逐条数据内容。

如何从 SAP Fiori Elements List Report Table 点击事件响应函数里拿到表格某一行的信息
如何从 SAP Fiori Elements List Report Table 点击事件响应函数里拿到表格某一行的信息

继续阅读