Acumatica 启用“;AllowAddNew“;和/或;允许它”;自定义DAC选择器的研究

Acumatica 启用“;AllowAddNew“;和/或;允许它”;自定义DAC选择器的研究,acumatica,Acumatica,我已经创建了一个定制的DAC、图形和屏幕,用于为客户管理新实体的跟踪,称为“管理公司”。新屏幕是带有CRUD控件的简单网格。客户屏幕上的选择器允许我从“管理公司”条目列表中进行选择。我还向Contact DAC和DB表添加了新字段,以跟踪指定联系人的“管理公司”。此字段是配置选择器的位置 我正在尝试启用此选择器的“AllowAddNew”和/或“AllowEdit”属性。当我设置为“True”时,按钮会显示,但它们什么也不做 我可以通过新屏幕创建新条目并保存到这个DB表中,我可以用选择器很好地检

我已经创建了一个定制的DAC、图形和屏幕,用于为客户管理新实体的跟踪,称为“管理公司”。新屏幕是带有CRUD控件的简单网格。客户屏幕上的选择器允许我从“管理公司”条目列表中进行选择。我还向Contact DAC和DB表添加了新字段,以跟踪指定联系人的“管理公司”。此字段是配置选择器的位置

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

我可以通过新屏幕创建新条目并保存到这个DB表中,我可以用选择器很好地检索它们。我就是不能从选择器创建新的

我已经试着查过了,但没有找到太多的信息

我怎样才能做到这一点

发援会样本:

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;
    }
}
使用系统;
使用PX数据;
使用PX.Objects.CR;
命名空间客户端代码
{
公共类管理公司名称:PXGraph
{
公共管理公司;
}
}
联系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
    }
}
名称空间PX.Objects.CR
{
公共类ContactExt:PXCacheExtension
{
#区域管理公司
[PXDBString]
[PXUIField(DisplayName=“管理公司”)]
[PX选择器(
类型(搜索),
新类型[]
{
类型(UsrCustomerManagementCompany.mancompID),
类型(UsrCustomerManagementCompany.mancompName)
},
SubstituteKey=typeof(UsrCustomerManagementCompany.mancompName)
)]
公共虚拟字符串UsrManagementCompany{get;set;}
公共抽象类usrManagementCompany:IBqlField{}
#端区
}
}

我认为您所缺少的是DAC上的PXPrimaryGraph属性,该属性指示该记录类型的主图是什么

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

[PXPrimaryGraph(typeof(ClientCode.ManagementCompanyMaint))]
[Serializable]
public class UsrCustomerManagementCompany : IBqlTable
{
    //...
}
以下是一些可能也有帮助的相关问题:


我认为您所缺少的是DAC上的PXPrimaryGraph属性,该属性用于指示该记录类型的主图形是什么

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

[PXPrimaryGraph(typeof(ClientCode.ManagementCompanyMaint))]
[Serializable]
public class UsrCustomerManagementCompany : IBqlTable
{
    //...
}
以下是一些可能也有帮助的相关问题:


事实证明,这正是我所缺少的。我添加了PXPrimaryGraph属性并重新编译,现在我可以单击任意一个按钮并获得自定义屏幕的弹出窗口。谢谢你的及时回复!对于那些试图在Acumatica的最新版本中找到链接的人来说,试试这个:事实证明,这正是我所缺少的。我添加了PXPrimaryGraph属性并重新编译,现在我可以单击任意一个按钮并获得自定义屏幕的弹出窗口。谢谢你的及时回复!如果有人想在Acumatica的最新版本中找到链接,请尝试以下方法: