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

能否通过RunObject向页面传递参数?如何获取RunPageView筛选条件

在Dynamics 365 Business Central中获取RunPageView传递的筛选条件

问题场景

角色中心页面通过操作按钮的RunPageView指定筛选条件,打开列表页面时,需要在列表页的OnOpenPage触发器中获取该筛选条件。

可行性及解决方案

完全可行,以下是两种常用实现方式:

方式1:通过GetView()获取完整视图并解析

调用页面的GetView()方法可以获取包含筛选条件的完整视图字符串,之后可通过字符串处理或专用类解析筛选内容:

trigger OnOpenPage()
var
    CurrentPageView: Text;
begin
    CurrentPageView := GetView();
    // 示例:解析Type字段的筛选值
    // 对于格式为"WHERE(Type=CONST(Type1))"的视图字符串,可通过StrPos、Copy等函数提取
    // 若使用Business Central 18及以上版本,可使用ViewParser类简化解析
end;

方式2:直接读取数据源的筛选(推荐)

如果列表页面绑定了源表(设置了SourceTable属性),可直接通过记录变量的GetFilter()方法获取指定字段的筛选值,这是最简洁的方式:

page 50126 "My List Page"
{
    Caption = 'My Page';
    ApplicationArea = All;
    PageType = List;
    SourceTable = "My Table"; // 假设列表页绑定的表包含"Type"字段

    layout
    {
        ...
    }

    trigger OnOpenPage()
    var
        TypeFilterValue: Text;
    begin
        TypeFilterValue := Rec.GetFilter("Type");
        // TypeFilterValue将是'Type1'或'Type2',即RunPageView传递的筛选值
    end;
}

注意事项

  • GetView()返回的字符串包含排序和筛选的完整定义,格式类似SORTING(Field1) WHERE(Type=CONST(Type1)),低版本需要自行处理字符串,高版本可借助ViewParser类解析。
  • 若列表页未绑定源表,只能使用GetView()方式获取筛选条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 07:37:29