在选择器上为自定义DAC启用“ AllowAddNew”和/或“ AllowEdit”

时间:2019-04-29 13:45:36

标签: acumatica

我创建了一个自定义DAC,图形和屏幕来管理对称为“管理公司”的客户新实体的跟踪。新屏幕是带有CRUD控件的简单网格。客户屏幕上的选择器使我可以从“管理公司”条目列表中进行选择。我还向Contact DAC和DB表添加了新字段,以跟踪将哪个“管理公司”分配给给定联系人。该字段是配置选择器的位置。

我正在尝试启用此选择器的“ AllowAddNew”和/或“ AllowEdit”属性。当我设置为“ True”时,将显示按钮,但是它们什么也不做。

我可以通过新屏幕创建新条目并将其保存到该数据库表,并且可以使用Selector检索它们。我只是无法从选择器创建新的。

我尝试查找此信息,但没有找到太多信息。

我该如何实现?

DAC的示例:

namespace PX.Objects.CR
{
    [Serializable]
    public class UsrCustomerManagementCompany : IBqlTable
    {
        #region MancompID
        [PXDBString(16, IsUnicode = true, InputMask = ">LLLLLLLLLLLLLLLL", IsKey = true)]
        [PXUIField(DisplayName = "Company ID")]
        [PXDefault]
        public virtual string MancompID { get; set; }
        public abstract class mancompID : IBqlField { }
        #endregion

        #region MancompName
        [PXDBString(60, IsUnicode = true, InputMask = "")]
        [PXUIField(DisplayName = "Company Name")]
        [PXDefault]
        public virtual string MancompName { get; set; }
        public abstract class mancompName : IBqlField { }
        #endregion

        #region MancompDescr
        [PXDBString(4000, IsUnicode = true, InputMask = "")]
        [PXUIField(DisplayName = "Description")]
        public virtual string MancompDescr { get; set; }
        public abstract class mancompDescr : IBqlField { }
        #endregion
    }
}

图:

using System;
using PX.Data;
using PX.Objects.CR;

namespace ClientCode
{
    public class ManagementCompanyMaint : PXGraph<ManagementCompanyMaint, UsrCustomerManagementCompany>
    {
        public PXSelect<UsrCustomerManagementCompany> ManagementCompanies;
    }
}

联系DAC扩展和选择器:

namespace PX.Objects.CR
{
    public class ContactExt : PXCacheExtension<PX.Objects.CR.Contact>
    {
        #region UsrManagementCompany
        [PXDBString]
        [PXUIField(DisplayName = "Management Company")]
        [PXSelector(
            typeof(Search<UsrCustomerManagementCompany.mancompID>),
            new Type[]
            {
                  typeof(UsrCustomerManagementCompany.mancompID),
                  typeof(UsrCustomerManagementCompany.mancompName)
            },
            SubstituteKey = typeof(UsrCustomerManagementCompany.mancompName)
        )]

        public virtual string UsrManagementCompany { get; set; }
        public abstract class usrManagementCompany : IBqlField { }
        #endregion
    }
}

1 个答案:

答案 0 :(得分:1)

我想您所缺少的只是DAC上的PXPrimaryGraph属性,以指示该记录类型要引用的主要图形是什么。

在您的情况下,尝试添加...

[PXPrimaryGraph(typeof(ClientCode.ManagementCompanyMaint))]
[Serializable]
public class UsrCustomerManagementCompany : IBqlTable
{
    //...
}

以下一些相关问题可能也有帮助:

How to create a hyperlink user field

how to use AllowEdit in Acumatica