【问题标题】:Attribute ID Selector Determines Field Values in Custom Field Acumatica属性 ID 选择器确定自定义字段 Acumatica 中的字段值
【发布时间】:2021-10-03 03:35:47
【问题描述】:

我在 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
    }
}

我需要从该字段中获取属性 ID,在 UsrAttributeValues 字段中,应填充该特定属性的值(例如,属性 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(), false, null);
            
        }
            #endregion
        }
}

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

【问题讨论】:

  • UsrAttributeSelection 是一个选择器,而不是一个“下拉”列表。 AllowedValues 和 Allowed 标签用于列表而不是选择器。它不是列表,您可以删除允许的值/标签。或者您必须删除 PXSelector 并将其替换为 PXStringList 或 PXIntList 属性以使其成为列表。
  • 我想您可以将 where 条件移动到 PXSelector 属性中,而不是使用此事件处理程序。
  • 我可以假设您需要过滤 AttributeID 选择器以仅显示作为 ComboBox 的属性吗?如果是这样,我可以帮助您提供一些示例代码来满足您的需求

标签: c# .net acumatica erp


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多