將測試工作訂單新增到相關實體描述欄位

假設你已經建立了自定義測試工作訂單螢幕來管理 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 文件