我想根据其他字段的条件隐藏或更新UI上的字段。
例如,如果我有一个名为Color的字段:
[PXUIField(DisplayName="Color")]
[PXStringList("Red,Blue,Other")]
[PXDefault("Red")]
注释的文本字段仅在"其他"被选中,这是如何完成的?
答案 0 :(得分:2)
请求的行为可以通过一系列事件处理程序或一堆属性来完成。您可以在Acumatica University和Acumatica Open University
上找到有关如何订阅T200培训课程中的RowSelected和FieldUpdated事件的几个示例。使用字段属性对于您的特定方案来说是一种更方便,更方便的选项。我建议将CommitChanges
设置为 True 作为下拉列表,以便在用户更新Color后立即清除并禁用/启用“注释”字段。此外,在评论后声明您的颜色非常方便,因此框架将首先处理“注释”字段,并在“颜色”字段更新后始终清除当前“注释”值。
public class Other : Constant<string>
{
public Other() : base("Other") { }
}
public abstract class comments : IBqlField { }
[PXDBString(255, IsUnicode = true)]
[PXUIField(DisplayName = "Comments")]
[PXUIEnabled(typeof(Where<color, Equal<Other>>))]
[PXFormula(typeof(Default<color>))]
[PXDefault(PersistingCheck = PXPersistingCheck.Nothing)]
public string Comments { get; set; }
public abstract class color : IBqlField { }
[PXDBString(10, IsUnicode = true)]
[PXUIField(DisplayName = "Color")]
[PXStringList("Red,Blue,Other")]
[PXDefault("Red")]
public string Color { get; set; }
在表单上有条件地隐藏/显示编辑器的唯一方法是使用RowSelected事件处理程序:
public void YourDAC_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
{
YourDAC row = e.Row as YourDAC;
if (row == null) return;
PXUIFieldAttribute.SetVisible<YourDAC.comments>(sender, row, row.Color == "Other");
}
我相信,在T200培训课程中,PXUIFieldAttribute.SetVisible
方法有几个例子。