根据输入字段隐藏/禁用其他字段

时间:2017-06-05 23:31:54

标签: acumatica

我想根据其他字段的条件隐藏或更新UI上的字段。

例如,如果我有一个名为Color的字段:

[PXUIField(DisplayName="Color")]
[PXStringList("Red,Blue,Other")]
[PXDefault("Red")]

注释的文本字段仅在"其他"被选中,这是如何完成的?

1 个答案:

答案 0 :(得分:2)

请求的行为可以通过一系列事件处理程序或一堆属性来完成。您可以在Acumatica UniversityAcumatica 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方法有几个例子。