获取PXSelector的CD和描述组合

时间:2017-01-17 21:55:18

标签: acumatica

我正在尝试使用Selector来查找客户,我希望它能够显示CD以及该字段中的描述。我在Acumatica看过很多次了 - 我以为我知道该怎么做,但它不起作用。这是我的代码:

     #region CustomerLookup
     public abstract class customerLookup : PX.Data.IBqlField
     {
     }
     protected string _CustomerLookup;
     [PXDBString(100, IsUnicode = true)]
     [PXUIField(DisplayName = "Customer Lookup")]
     [PXSelector(typeof(Customer.acctCD)
                ,typeof(Customer.acctCD)
                ,typeof(Customer.acctName)
                ,DescriptionField=typeof(Customer.acctName))]
     public virtual string CustomerLookup
     {
         get
         {
             return this._CustomerLookup;
         }
         set
         {
             this._CustomerLookup = value;
         }
     }
     #endregion

我原以为提供DescriptionField可以解决这个问题,但事实并非如此。

2 个答案:

答案 0 :(得分:0)

在回答这个问题之前,让我首先提一下上面代码片段的两个主要问题:

  1. 在Acumatica中客户是一种特定的系统对象类型,它支持分段密钥。要创建支持分段密钥的记录,您应该使用PXDimensionSelectorAttribute而不是PXSelectorAttribute。对于Customer实体,开箱即用的几个属性(如CustomerAttribute或CustomerActiveAttribute)可用于创建Customer查找:

    enter image description here

  2. CustomerLookup 字段必须属于Int32?int?)类型:在Acumatica中,用户可以随时更改客户ID(通过更改ID 客户屏幕上的按钮。要为Customer DAC建立外键,更好的方法是声明一个整数字段,并通过Customer.BAccount字段将您的自定义记录与Customers相关联

  3. 以下是DAC字段的推荐声明,它在UI中创建客户查找:

    [Serializable]
    public partial class DetailsResult : IBqlTable
    {
        ...
    
        #region CustomerId
        public abstract class customerId : PX.Data.IBqlField
        {
        }
        [Customer(DescriptionField = typeof(Customer.acctName))]
        public virtual Int32? CustomerID { get; set; }
        #endregion
    
        ...
    }
    

    指定了DescriptionField属性后, PXDimensionSelector放置在表单上将默认根据“{SearchKey / SubstituteKey} - {DescriptionField}”模式格式化所选记录:

    enter image description here

    要在网格单元格中显示DescriptionField ,您必须为CustomerID_description字段定义其他列(其中_description部分是Acumatica的特殊关键字,专门用于这种类型的请求):

    enter image description here

答案 1 :(得分:0)

我相信答案是显而易见的 - 我不认为描述字段在网格中的工作方式相同。在标题字段中,它可以在您导航时显示CD - 描述。网格字段显然不会以这种方式工作,即使您在选择器中按照标题选择器中的方式指定描述字段也是如此。