能否通过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
相关产品推荐
相关产品推荐

