【问题标题】:New DAC field from VS classVS 类的新 DAC 字段
【发布时间】:2016-11-02 14:50:28
【问题描述】:

我必须在 Visual Studio 项目中创建一个 DAC 扩展,而不是自定义 DAC 类,因为我必须为几个字段定义下拉值,如果我直接从自定义扩展 DAC,我将无法创建它。

这里是带有下拉字段及其值的 DAC 扩展代码,来自 Visual Studio 项目-

public class SOOrderExtension : PXCacheExtension<PX.Objects.SO.SOOrder>
{
	#region Class DropDownValue
	public static class DropDownValue
	{
		public const string Value1 = "1";
		public const string Value2 = "2";
		public const string Value3 = "3";
	}
	#endregion

	#region UsrDropDown

	[PXDBString(1)]
	[PXUIField(DisplayName = "My DropDown")]
	[PXStringList(new string[]
	{
		DropDownValue.Value1, DropDownValue.Value2, DropDownValue.Value3
	},
	new string[]
	{
		"One", "Two", "Three"
	})]
	public virtual string UsrDropDown { get; set; }
	public abstract class usrDropDown : IBqlField { }

	#endregion
}

这工作正常,它在 SOOrder 现有表中创建了新的用户定义字段。但是,如果我将任何新字段添加到此 DAC 扩展类中,它不会在 SOOrder 表中创建新字段,并且只会在我发布我的自定义时跳过。因此,我需要在我的自定义中添加一个 SQL 脚本,以将这些新字段添加到 SOOrder 表中。

我不确定这是否是正确的方法。理想情况下,如果我在 Visual Studio 的 DAC 扩展中添加新字段,它应该在 SOOrder 表中创建新字段,就像我将 DAC 扩展中的新字段直接添加到自定义中一样。

【问题讨论】:

    标签: acumatica


    【解决方案1】:

    Krunal,Acumatica 只会在自定义项目管理器中声明新的绑定 DAC 字段时在数据库中创建新列。当有人直接在 Visual Studio 中声明 DAC 扩展中的新字段时,无法在数据库中自动创建新列。

    请参考下面的截图,展示如何在项目管理器中直接声明您的自定义 UsrDropDown:

    【讨论】:

    • 同意。但是,如果该 DAC 扩展有一些自定义逻辑,我需要在那里引用它。如 SOOrderExtension currentSOOrxerExt = PXCache.GetExtension(current);如果我在定制项目经理中有 DAC,你还认为可以吗?
    • 您能否解释一下为什么需要在 DAC 字段 getter/setter 中实现自定义逻辑?
    • 不在获取/设置属性中。我需要写一些 GraphExtension。 public class SOOrderEntryExtension : PXGraphExtension 例如,我需要在单击按钮时从此自定义字段中填充行项目中的值。
    • 例如检查步骤 2.1:添加 T300 培训课程中的验证信用记录操作
    • 谢谢 Ruslan,我会试试的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 2021-08-02
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多