BC-22:无需修改源表,是否有LookupPageId的页面级替代查找方案?
无需修改表结构为查找控件添加新建按钮(BC 22版本)
在Dynamics 365 Business Central 22版本中,无需修改源表结构,可通过以下几种方式让查找控件显示带有新建按钮的样式(默认无LookupPageId时查找弹窗无新建按钮):
直接在页面控件上配置
LookupPageId
无需修改源表,仅在对应页面的查找控件属性中指定目标表的标准列表页。标准列表页默认包含新建操作,因此查找弹窗会自动带上新建按钮。示例代码:field("Customer No."; "Customer No.") { ApplicationArea = All; LookupPageId = "Customer List"; // 指定目标标准列表页 }扩展自定义查找页并关联
如果标准列表页的功能不符合需求,可以扩展一个自定义查找页(确保包含新建操作),再将页面控件的LookupPageId指向该扩展页。示例代码:
扩展列表页:pageextension 50100 "Custom Customer List" extends "Customer List" { actions { // 标准列表页已自带新建操作,若需自定义可在此调整 addfirst(Processing) { action(NewCustomer) { Caption = '新建客户'; Image = New; Promoted = true; PromotedCategory = Process; Trigger OnAction() { Page.RunModal(Page::"Customer Card"); } } } } }关联到页面控件:
field("Customer No."; "Customer No.") { ApplicationArea = All; LookupPageId = "Custom Customer List"; }通过
OnLookup触发器自定义查找逻辑
若不想指定LookupPageId,可在控件的OnLookup触发器中手动调用带新建按钮的列表页,替代默认查找逻辑。示例代码:field("Customer No."; "Customer No.") { ApplicationArea = All; trigger OnLookup(var Text: Text): Boolean var CustomerList: Page "Customer List"; Customer: Record Customer; begin if CustomerList.RunModal() = Action::LookupOK then begin CustomerList.GetRecord(Customer); "Customer No." := Customer."No."; exit(true); end; exit(false); end; }
以上三种方法均仅涉及页面对象的修改或扩展,无需调整源表结构,即可实现查找控件显示带新建按钮的样式。
内容的提问来源于stack exchange,提问作者FoxyError
相关产品推荐
相关产品推荐

