【发布时间】: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 的属性吗?如果是这样,我可以帮助您提供一些示例代码来满足您的需求