如何获得自定义表值Acumatica

时间:2019-07-17 14:52:40

标签: c# asp.net acumatica

嗨,我很难将我的自定义表继承到我的dac并在此处进行选择的是我的自定义表Branded.cs

  [Serializable]
  public class Branded : IBqlTable
  {
    #region BrandID
    [PXDBInt(IsKey = true)]
    [PXUIField(DisplayName = "Brand ID")]
    public virtual int? BrandID { get; set; }
    public abstract class brandID : PX.Data.BQL.BqlInt.Field<brandID> { }
    #endregion

    #region Brand
    [PXDBString(InputMask = "")]
    [PXUIField(DisplayName = "Brand")]
    public virtual string Brand { get; set; }
    public abstract class brand : PX.Data.BQL.BqlString.Field<brand> { }
    #endregion
}

这是我要使用的自定义DAC

public class InventoryItemExt : PXCacheExtension<PX.Objects.IN.InventoryItem>
    {


        #region UsrCategory
        [PXDBString(100)]
        [PXUIField(DisplayName="Category")]

        public virtual string UsrCategory { get; set; }
        public abstract class usrCategory : PX.Data.BQL.BqlString.Field<usrCategory> { }
        #endregion

        #region UsrBrand
        [PXDBString(100)]
        [PXUIField(DisplayName="Brand")]
        //red
        [PXSelector(
            typeof(Search<Branded.brand>),
                typeof(Branded.brandID),
                typeof(Branded.brand))]
        public virtual string UsrBrand { get; set; }
        public abstract class usrBrand : PX.Data.BQL.BqlString.Field<usrBrand> { }
        #endregion

当我将它们连接在一起时,如何继承我在dac上的自定义表以创建选择器

  

函数“ MoveNext”中发生未处理的异常。请   有关更多详细信息,请参见跟踪日志。

enter image description here

谢谢您的帮助

3 个答案:

答案 0 :(得分:0)

 #region UsrBrand
    [PXDBString(100)]
    [PXUIField(DisplayName="Brand")]
    //red
    [PXSelector(
        typeof(Search<Branded.brand>),new Type[]
         {
            typeof(Branded.brandID),
            typeof(Branded.brand))]
         }
    public virtual string UsrBrand { get; set; }
    public abstract class usrBrand : PX.Data.BQL.BqlString.Field<usrBrand> { }
    #endregion

答案 1 :(得分:0)

我假设由于BrandID是要在表中存储密钥但要显示Brand值(使用ID / CD配置)的密钥。如果是这样,那么您将希望InventoryItemExt中的UsrBrand为Int并使用如下选择器:

[PXDBInt]
[PXUIField(DisplayName = "Brand")]
[PXSelector(
            typeof(Search<Branded.brandID>),
            SubstituteKey = typeof(Branded.brand))]
public virtual int? UsrBrand { get; set; }
public abstract class usrBrand : PX.Data.BQL.BqlInt.Field<usrBrand> { }

如果将主DAC的ui字段属性的可见性设置为SelectorVisible,则也无需跳过选择器中的列。标记为SelectorVisible的所有列将按照在dac中出现的顺序在选择器中显示。另外,不要忘记包括字符串大小。

[PXDBString(100, InputMask = "")]
[PXUIField(DisplayName = "Brand", Visibility = PXUIVisibility.SelectorVisible)]
public virtual string Brand { get; set; }

如果不是这种情况,那么您应该具有跟踪详细信息,如发布的错误所指示。在此处查看更多详细信息,然后发布完整错误。可能与您的DAC配置无关。

答案 2 :(得分:0)

我明白了,谢谢。我意识到我有一个代码和一个dac,并且正在制作两个表os,所以我必须删除其中的一个,并且效果很好,谢谢大家