通过 Dynamics 365 中的扩展添加显示或编辑方法
已出版: 2025年2月16日 UTC 11:56:12
最后更新 2026年1月12日 UTC 08:57:33
本文将介绍如何使用类扩展向 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(确保包含类名,否则编译器找不到该方法)。
大功告成 :-)
更新:现在向窗体添加显示方法时不再需要包含扩展类名,但在最初发布时需要。我保留此信息,以防部分读者仍在使用旧版本。
进一步阅读
如果您喜欢这篇文章,您可能还会喜欢这些建议:
