You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fiori Elements列表报表:如何用extensionAPI获取隐藏列选中行值

Fiori Elements列表报表:获取选中行隐藏列值并修改按钮文本

问题场景

我需要在简易Fiori Elements列表报表中实现逻辑:基于表格选中行的隐藏列值修改按钮文本,且必须使用extensionAPI。目前已能通过以下代码获取选中行的可见列数据:

let aContexts = this.extensionAPI.getSelectedContexts();
aContexts.forEach(element => {
    let data = element.getModel().getObject(element.getPath());
    console.log('Selected Rows are => ', data);
});

也知道如何修改按钮文本:

oEvent.getSource().setProperty("text","Text");

但无法获取隐藏列的值,看起来this.extensionAPI.getSelectedContexts()仅返回可见列数据。

解决方法

方法1:显式指定读取隐藏列字段

getObject()默认可能仅返回表格渲染时用到的可见字段,隐藏列字段未被自动加载。可以通过$select参数强制指定要读取的字段:

let aContexts = this.extensionAPI.getSelectedContexts();
aContexts.forEach(element => {
    // 替换"HiddenField"为你的实际隐藏列字段名
    const fullRowData = element.getModel().getObject(element.getPath(), "$select=*,HiddenField");
    const hiddenValue = fullRowData.HiddenField;
    console.log("隐藏列值:", hiddenValue);
    
    // 示例:根据隐藏列值修改按钮文本
    const oButton = oEvent.getSource(); // 或通过this.byId("按钮ID")获取
    oButton.setProperty("text", `状态:${hiddenValue}`);
});

$select=*,HiddenField表示读取所有已加载字段+指定的隐藏字段,既保留原有数据,又确保拿到隐藏列的值。

方法2:主动读取完整实体数据

如果需要获取行的完整数据(所有字段),可以调用模型的read()方法主动请求:

let aContexts = this.extensionAPI.getSelectedContexts();
aContexts.forEach(element => {
    const oModel = element.getModel();
    const sEntityPath = element.getPath();
    
    oModel.read(sEntityPath, {
        success: (oFullData) => {
            console.log("完整行数据(含隐藏列):", oFullData);
            // 根据隐藏列值更新按钮文本
            const oButton = this.byId("yourButtonId");
            oButton.setProperty("text", `操作:${oFullData.HiddenField}`);
        },
        error: (oErr) => console.error("读取数据失败:", oErr)
    });
});

关键注意点

  • 确认隐藏列对应的字段在OData服务中是可访问的,没有权限拦截;
  • 如果是JSON客户端模型,隐藏列数据本来就存在于模型中,直接getObject()就能拿到,检查下是否是数据未正确赋值;
  • 修改按钮文本时,确保按钮实例获取正确,可通过事件源oEvent.getSource()或控件IDthis.byId()获取。

内容的提问来源于stack exchange,提问作者toffler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:22:40