将测试工作订单添加到相关实体描述字段

假设你已经创建了自定义测试工作订单屏幕来管理 Acumatica ERP 应用程序中的测试工作订单:

StackOverflow 文档

测试工作订单屏幕上管理的 TestWorkOrder DAC 中已经声明了 NoteID 字段 :

[Serializable]
public class TestWorkOrder : IBqlTable
{
    ...

    #region NoteID
    public abstract class noteID : IBqlField { }
    [PXNote]
    public virtual Guid? NoteID { get; set; }
    #endregion

    ...
}

对于顶级 PXForm 容器,ActivityIndicator 属性设置为 True

<px:PXFormView ID="form" runat="server" ActivityIndicator="true" DataSourceID="ds" Style="z-index: 100" DataMember="ITWO" Width="100%" >

但是,为测试工作订单创建新任务,事件或活动时,“ 相关实体描述” 控件始终为空:

StackOverflow 文档

要将“ 测试工作订单” 实体添加到“ 相关实体描述” 选择器,你应该完成以下步骤:

  1. 对于 TestWorkOrder.NoteID 字段上的 PXNoteAttribute ,将 ShowInReferenceSelector 属性设置为 True 并定义 BQL 表达式以选择实体查找中显示的数据记录 :

    [PXNote(
        ShowInReferenceSelector = true,
        Selector = typeof(Search<TestWorkOrder.orderNbr>))]
    public virtual Guid? NoteID { get; set; }
    
  2. PXCacheNameAttributePXPrimaryGraphAttribute 装饰 TestWorkOrder DAC:

    [PXLocalizable]
    public static class Messages
    {
        public const string Opportunity = "Test Work Order";
    }
    
    [Serializable]
    [PXCacheName(Messages.Opportunity)]
    [PXPrimaryGraph(typeof(TestWorkOrderEntry))]
    public class TestWorkOrder : IBqlTable
    {
        ...
    }
    

    PXCacheName 属性定义 TestWorkOrder DAC 的用户友好名称( 本例中为测试工作订单 ),可在类型下拉列表中找到。PXPrimaryGraph 属性确定用户被重定向以编辑测试工作订单的输入页面,这是给定示例中的测试工作订单屏幕。

  3. PXFieldDescriptionAttribute 装饰一些 TestWorkOrder 田地。这些字段值将连接到单个文本标签中,表示“ 相关实体描述” 字段中引用的测试工作顺序 :

    ...
    [PXFieldDescription]
    public virtual string OrderNbr { get; set; }
    
    ...
    [PXFieldDescription]
    public virtual String Status { get; set; }
    
    ...
    [PXFieldDescription]
    public virtual string POOrderNbr { get; set; }
    
  4. 通过选择以下方法之一定义实体查找中显示的列列表 :

    一个。使用 PXNoteAttribute.FieldList 属性(获得最高优先级):

    public abstract class noteID : IBqlField { }
    [PXNote(
        ShowInReferenceSelector = true,
        Selector = typeof(Search<TestWorkOrder.orderNbr>),
        FieldList = new Type[]
        {
            typeof(TestWorkOrder.orderNbr),
            typeof(TestWorkOrder.orderDate),
            typeof(TestWorkOrder.status),
            typeof(TestWorkOrder.poOrderNbr)
        })]
    public virtual Guid? NoteID { get; set; }
    

    湾借用为 OrderNbr 查找定义的列的列表 :

    public abstract class orderNbr : IBqlField { }
    [PXDBString(15, IsKey = true, IsUnicode = true, InputMask = ">CCCCCCCCCCCCCCC")]
    [PXDefault()]
    [PXUIField(DisplayName = "ITWO Nbr.", Visibility = PXUIVisibility.SelectorVisible)]
    [PXSelector(typeof(Search<TestWorkOrder.orderNbr>),
        typeof(TestWorkOrder.orderNbr),
        typeof(TestWorkOrder.orderDate),
        typeof(TestWorkOrder.status),
        typeof(TestWorkOrder.poOrderNbr))]
    [PXFieldDescription]
    public virtual string OrderNbr { get; set; }
    

    C。显示所有 TestWorkOrder 字段,可见性设置为 PXUIVisibility.SelectorVisible

    ...
    [PXUIField(DisplayName = "ITWO Nbr.", Visibility = PXUIVisibility.SelectorVisible)]
    public virtual string OrderNbr { get; set; }
    
    ...
    [PXUIField(DisplayName = "Order Date", Visibility = PXUIVisibility.SelectorVisible)]
    public virtual DateTime? OrderDate { get; set; }
    
    ...
    [PXUIField(DisplayName = "Status", Visibility = PXUIVisibility.SelectorVisible)]
    public virtual String Status { get; set; }
    
    ...
    [PXUIField(DisplayName = "Purchase Order", Visibility = PXUIVisibility.SelectorVisible)]
    public virtual string POOrderNbr { get; set; }
    

完成上述 4 个步骤后, “任务,事件和活动”上的“ 相关实体描述” 字段应完全支持“ 测试工作订单” ****

StackOverflow 文档