简单来说 OnDrillDown 事件是用来处理 page field 的点击的, 我们可以在定义 Page 的时候通过 OnDrillDown trigger,如下
trigger OnDrillDown()
begin
...
end;
值得注意的是 OnDrillDown 在用全局变量渲染的 field 上面是不能工作的。 能工作的只有来自 SourceTable 的 filed
什么意思呢?
也就是说如果需要在某个字段上能点击,运行一些代码,或者跳转到其他文档,不能用全局变量来做字段的值的来源,虽然在有些场景数据可以存在计算出来的全局变量里面作为 field 的值,但是为了能让 DrillDown 工作,我们需要至少设计临时数据库来作为数据源。
代码例子
page 50000 "My Orders"
{
Caption = 'My Orders';
UsageCategory = Lists;
ApplicationArea = All;
PageType = ListPart;
SourceTable = "Sales Header";
Editable = true;
DelayedInsert = true;
layout
{
area(content)
{
repeater(Control1)
{
ShowCaption = false;
Editable = true;
field("Order Number"; Rec."No.")
{
ApplicationArea = All;
ToolTip = 'Order Number';
trigger OnDrillDown()
begin
//这个函数会被调用
end;
}
field("GlobalData"; GlobalData)
{
ApplicationArea = All;
ToolTip = 'GlobalData';
trigger OnDrillDown()
begin
//这个函数不会被调用
end;
}
}
var
GlobalData: Code[10];
}
通过设置 field 的 DrillDown Property 也不能解决这个问题。
参考文档: https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/properties/devenv-drilldown-property
https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/triggers-auto/pagefield/devenv-ondrilldown-pagefield-trigger?source=recommendations