通过 Dynamics 365 中的扩展添加显示或编辑方法
已出版: 2025年2月16日 UTC 11:56:12
在本文中,我解释如何使用类扩展向 Dynamics 365 for Operations 中的表和表单添加显示方法,包括 X++ 代码示例。
Add Display or Edit Method via Extension in Dynamics 365
虽然计划在 Dynamics 中使用显示或编辑方法通常会让您考虑是否可以以不同的方式设计解决方案,但有时它们是最好的方法。
在以前版本的 Dynamics 和 Axapta 中,在表格和表单上创建显示或编辑方法非常容易,但是当我最近碰巧必须在 Dynamics 365 中创建我的第一个编辑方法时,我发现这样做的过程有些不同。
显然有几种有效的方法,但我发现最好的方法(无论是在直观性还是代码美观性方面)是使用类扩展。是的,您可以使用类扩展将方法添加到类以外的其他元素类型 - 在本例中是表,但它也适用于表单。
首先,创建一个新类。您可以随意命名,但出于某种原因,它必须带有后缀“_Extension”。假设您需要向 CustTable 添加一个显示方法,例如,您可以将其命名为 MyCustTable_Extension。
该类必须用 ExtensionOf 修饰,以便系统知道您正在扩展什么,如下所示:
public final class MyCustTable_Extension
{
}
现在,您只需在这个类中实现您的显示方法,就像您在早期版本的 Dynamics 中直接在表上所做的那样 - “this”甚至引用该表,因此您可以访问字段和其他方法。
例如,具有简单(且完全无用)的显示方法(仅返回客户的帐号)的类可能如下所示:
public final class MyCustTable_Extension
{
public display CustAccount displayAccountNum()
{
;
return this.AccountNum;
}
}
现在,要将显示方法添加到表单(或表单扩展,如果您不能直接编辑表单),您需要手动向表单添加一个字段,并确保使用正确的类型(此示例中为字符串)。
然后,在控件上,将 DataSource 设置为 CustTable(或 CustTable 数据源的任何名称),将 DataMethod 设置为 MyCustTable_Extension.displayAccountNum(确保包含类名,否则编译器找不到该方法)。
您已完成 :-)
更新:向表单添加显示方法时不再需要包含扩展类名,但在最初发布时是需要的。我在这里保留这些信息,以防有些读者仍在使用旧版本。