如何基于临时记录使用Base App页面执行Lookup并获取筛选器?
基于临时记录用Base App页面实现Lookup并获取筛选器的方案
以下是几个无需自定义页面、适配本地部署许可证限制的实用思路:
思路1:通过页面实例直接调用GetSelectionFilter
先初始化Base App的标准页面,将临时记录传入后运行模态窗口,结束后直接从页面实例获取筛选器并应用到临时记录上:
var TempCustomer: Record Customer temporary; CustomerListPage: Page "Customer List"; begin // 假设已填充临时记录数据 CustomerListPage.SetTableView(TempCustomer); // 将临时记录的视图传入页面 if CustomerListPage.RunModal() = Action::OK then begin CustomerListPage.GetSelectionFilter(TempCustomer); // 获取用户设置的筛选器到临时记录 // 此时TempCustomer已带有用户设置的筛选条件,可后续处理 Message('筛选器内容: %1', TempCustomer.GetFilter("No.")); end; end;
思路2:利用RecordRef获取页面视图(筛选器)
如果需要更灵活地处理筛选器文本,可通过RecordRef配合页面的GetView方法直接获取筛选器字符串:
var TempCustomer: Record Customer temporary; CustomerListPage: Page "Customer List"; RecRef: RecordRef; FilterView: Text; begin RecRef.GetTable(TempCustomer); CustomerListPage.SetRecordRef(RecRef); if CustomerListPage.RunModal() = Action::OK then begin FilterView := CustomerListPage.GetView(); // 获取完整的筛选器视图文本 // 可将筛选器应用回临时记录 TempCustomer.SetView(FilterView); Message('获取到的筛选视图: %1', FilterView); end; end;
思路3:借助临时记录的视图传递与反向获取
如果标准页面支持直接绑定临时记录,也可以通过先给临时记录设置初始视图,运行页面后直接读取临时记录的筛选条件:
var TempCustomer: Record Customer temporary; begin // 填充临时记录数据... if Page.RunModal(Page::"Customer List", TempCustomer) = Action::OK then begin // 用户在页面设置的筛选器会自动同步回TempCustomer Message('筛选后的记录数: %1', TempCustomer.Count()); Message("No.字段筛选器: %1", TempCustomer.GetFilter("No.")); end; end;
注意:部分Base App页面可能对临时记录的支持有差异,测试时需确认目标页面是否允许绑定临时记录并同步筛选条件。
内容的提问来源于stack exchange,提问作者dewin
相关产品推荐
相关产品推荐

