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

属性 ID 选择器确定自定义字段 Acumatica 中的字段值

如何解决属性 ID 选择器确定自定义字段 Acumatica 中的字段值

我在 AP303000 表单中创建了一个行级字段,我需要有属性 ID 选择器

namespace MidayaCustomizations
{
    public class APTranExt : PXCacheExtension<PX.Objects.AP.APTran>
    {
        #region UsrAttributeSelection
        [PXDBString(250)]
        [PXUIField(displayName = "Attribute ID")]
        [PXSelector(typeof(Search<CSAttribute.attributeID>),typeof(CSAttribute.attributeID),typeof(CSAttribute.description),typeof(CSAttribute.controlType))] 
        public virtual string UsrAttributeSelection { get; set; }
        public abstract class usrAttributeSelection : PX.Data.BQL.BqlString.Field<usrAttributeSelection> { }
        #endregion

        #region UsrAttributeValues
        [PXDBString(250)]
        [PXUIField(displayName = "Attribute Values")]

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

我需要从该字段和 UsrAttributeValues 字段中获取属性 ID,应该填充来自该特定属性的值(例如,属性 ID“CSS”是一个下拉字段,在 UsrAttributeValues 字段中,这些值列表应该可供选择)。

namespace MidayaCustomizations
{
    public class APInvoiceEntry_Extension : PXGraphExtension<APInvoiceEntry>
    {
        #region Event Handlers

        protected void APTran_UsrAttributeSelection_FieldSelecting(PXCache cache,PXFieldSelectingEventArgs e)
        {
            APTran row = (APTran)e.Row;
            if (row == null) return;
            var rowExt = PXCache<APTran>.GetExtension<APTranExt>(row);
           
            List<string> allowedValues = new List<string>();
            List<string> allowedLabels = new List<string>();

            
                foreach (CSAttributeDetail objCSAttributeDetail in PXSelect<CSAttributeDetail,Where<CSAttributeDetail.attributeID,Equal<required<APTranExt.usrAttributeSelection>>>>.Select(Base,rowExt.UsrAttributeSelection))


                {
                    allowedValues.Add(objCSAttributeDetail.ValueID);
                    allowedLabels.Add(objCSAttributeDetail.Description);
                }
               
                e.ReturnState = PXStringState.CreateInstance(e.ReturnState,10,true,typeof(APTranExt.usrAttributeValues).Name,false,-1,string.Empty,allowedValues.ToArray(),allowedLabels.ToArray(),null);
            
        }
            #endregion
        }
}

目前正在尝试使用字段选择事件处理程序从属性获取值,但我遇到了错误,任何帮助将不胜感激。

解决方法

我附上一个示例项目供您测试。如果它适合你,我也会提供 VS 项目。

简而言之,我不是 100% 确定为什么您的代码会抛出错误。我的技术非常相似。唯一的区别是我将 Attributes 限制为 Combo 和 MultiSelect Combo 控件类型。同样在屏幕中,您必须在相关网格和列上打开矩阵模式。

https://drive.govelocit.com/d/f/634034105803123785

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