微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在投影字段上设置默认值?

如何解决如何在投影字段上设置默认值?

我有一个如下定义的投影 DAC。我在 InventoryItemmaint 的视图中使用此 DAC。我需要我的投影 DAC 的 InventoryID 字段认为当前项目的 ID,但我尝试的任何内容都不起作用。

有什么特别的方法可以做到这一点吗?

我试过了:

  • PXDBDefaultPXParent
  • PXDefault(typeof(InventoryItem.inventoryID))]
  • PXFormula(如下所示)

[PXProjection(typeof(SelectFrom<MXFormulaClass>.InnerJoin<MXFormulaClassNutrients>.
    On<MXFormulaClassNutrients.classID.IsEqual<MXFormulaClass.classID>>.
    LeftJoin<MxnutrientValue>.
    On<MxnutrientValue.nutrientID.IsEqual<MXFormulaClassNutrients.nutrientID>>),Persistent = true)]
[PXCacheName("MXItemNutrientValues")]
public class MXItemNutrientValues : IBqlTable
{      
    #region ClassID
    [PXDBInt(IsKey = true,BqlField = typeof(MXFormulaClassNutrients.classID))]
    [PXUIField(displayName = "Class ID")]
    public virtual int? ClassID { get; set; }
    public abstract class classID : PX.Data.BQL.BqlInt.Field<classID> { }
    #endregion

    #region NutrientID
    [PXDBInt(IsKey = true,BqlField = typeof(MXFormulaClassNutrients.nutrientID))]
    [PXExtraKey]
    [PXDBDefault(typeof(MXFormulaClassNutrients.nutrientID))]
    [PXSelector(typeof(Mxnutrient.nutrientID),typeof(Mxnutrient.nutrientCD),typeof(Mxnutrient.description),SubstituteKey = typeof(Mxnutrient.nutrientCD),DescriptionField = typeof(Mxnutrient.description))]
    [PXUIField(displayName = "Nutrient")]
    public virtual int? NutrientID { get; set; }
    public abstract class nutrientID : PX.Data.BQL.BqlInt.Field<nutrientID> { }
    #endregion

    #region MinMax
    [PXDBInt(IsKey = true,BqlField = typeof(MXFormulaClassNutrients.minMax))]
    [PXIntList(new int[] { 1,2 },new string[] { "Min","Max" })]
    [PXUIField(displayName = "Min/Max")]
    public virtual int? MinMax { get; set; }
    public abstract class minMax : PX.Data.BQL.BqlInt.Field<minMax> { }
    #endregion

    #region SortOrder
    [PXDBInt(BqlField = typeof(MXFormulaClassNutrients.sortOrder))]
    [PXUIField(displayName = "Sort Order")]
    public virtual int? SortOrder { get; set; }
    public abstract class sortOrder : PX.Data.BQL.BqlInt.Field<sortOrder> { }
    #endregion

    #region InventoryID
    [PXDBInt(IsKey = true,BqlField = typeof(MxnutrientValue.inventoryID))]
    [PXFormula(typeof(Where<InventoryItem.inventoryID,Equal<Current<InventoryItem.inventoryID>>>))]
    [PXUIField(displayName = "Inventory ID")]
    public virtual int? InventoryID { get; set; }
    public abstract class inventoryID : PX.Data.BQL.BqlInt.Field<inventoryID> { }
    #endregion

    #region Value
    [PXDBDecimal(BqlField = typeof(MxnutrientValue.value))]
    [PXUIField(displayName = "Value")]
    public virtual Decimal? Value { get; set; }
    public abstract class value : PX.Data.BQL.BqlDecimal.Field<value> { }
    #endregion

    #region CreatedByID
    [PXDBCreatedByID(BqlField = typeof(MxnutrientValue.createdByID))]
    public virtual Guid? CreatedByID { get; set; }
    public abstract class createdByID : PX.Data.BQL.BqlGuid.Field<createdByID> { }
    #endregion

    #region CreatedByScreenID
    [PXDBCreatedByScreenID(BqlField = typeof(MxnutrientValue.createdByScreenID))]
    public virtual string CreatedByScreenID { get; set; }
    public abstract class createdByScreenID : PX.Data.BQL.BqlString.Field<createdByScreenID> { }
    #endregion

    #region CreatedDateTime
    [PXDBCreatedDateTime(BqlField = typeof(MxnutrientValue.createdDateTime))]
    public virtual DateTime? CreatedDateTime { get; set; }
    public abstract class createdDateTime : PX.Data.BQL.BqlDateTime.Field<createdDateTime> { }
    #endregion

    #region LastModifiedByID
    [PXDBLastModifiedByID(BqlField = typeof(MxnutrientValue.lastModifiedByID))]
    public virtual Guid? LastModifiedByID { get; set; }
    public abstract class lastModifiedByID : PX.Data.BQL.BqlGuid.Field<lastModifiedByID> { }
    #endregion

    #region LastModifiedByScreenID
    [PXDBLastModifiedByScreenID(BqlField = typeof(MxnutrientValue.lastModifiedByScreenID))]
    public virtual string LastModifiedByScreenID { get; set; }
    public abstract class lastModifiedByScreenID : PX.Data.BQL.BqlString.Field<lastModifiedByScreenID> { }
    #endregion

    #region LastModifiedDateTime
    [PXDBLastModifiedDateTime(BqlField = typeof(MxnutrientValue.lastModifiedDateTime))]
    public virtual DateTime? LastModifiedDateTime { get; set; }
    public abstract class lastModifiedDateTime : PX.Data.BQL.BqlDateTime.Field<lastModifiedDateTime> { }
    #endregion

    #region Tstamp
    [PXDBTimestamp(BqlField = typeof(MxnutrientValue.tstamp))]
    public virtual byte[] Tstamp { get; set; }
    public abstract class tstamp : PX.Data.BQL.BqlByteArray.Field<tstamp> { }
    #endregion

    #region Noteid
    [PXNote(BqlField = typeof(MxnutrientValue.noteid))]
    public virtual Guid? Noteid { get; set; }
    public abstract class noteid : PX.Data.BQL.BqlGuid.Field<noteid> { }
    #endregion
}

解决方法

您是否将视图链接到 InventoryMaint 图扩展中视图定义中缓存的 Current 属性?类似的东西

public PXSelect<MXItemNutrientValues,Where<MXItemNutrientValues.inventoryid,Equal<Current<InventoryItem.inventoryID>>> customView;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。