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

Acumatica 根据输入字段隐藏/禁用其他字段,acumatica,Acumatica,我想根据另一个字段的条件隐藏或更新UI上的字段 例如,如果我有一个名为“颜色”的字段: [PXUIField(DisplayName="Color")] [PXStringList("Red,Blue,Other")] [PXDefault("Red")] 注释的文本字段仅在选择“其他”时显示,这是如何实现的?请求的行为可以通过一系列事件处理程序或一组属性来实现。在T200培训课程中,您可以找到几个关于如何订阅RowSelected和FieldUpdate事件的示例,可从和获得 对于您的特定场

我想根据另一个字段的条件隐藏或更新UI上的字段

例如,如果我有一个名为“颜色”的字段:

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

注释的文本字段仅在选择“其他”时显示,这是如何实现的?

请求的行为可以通过一系列事件处理程序或一组属性来实现。在T200培训课程中,您可以找到几个关于如何订阅RowSelected和FieldUpdate事件的示例,可从和获得

对于您的特定场景,使用字段属性是一种更方便、更容易的选择。我建议在下拉列表中将
CommitChanges
设置为True,以便在用户更新颜色后立即清除并禁用/启用注释字段。另外,在注释之后声明颜色非常重要,因此框架将首先处理注释字段,并在颜色字段更新后始终清除当前注释值

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; }
公共类其他:常量
{
public Other():基(“其他”){}
}
公共抽象类注释:IBqlField{}
[PXDBString(255,IsUnicode=true)]
[PXUIField(DisplayName=“Comments”)]
[PXUIEnabled(typeof(Where))]
[PXFormula(typeof(默认))]
[PXDefault(PersistingCheck=PXPersistingCheck.Nothing)]
公共字符串注释{get;set;}
公共抽象类颜色:IBqlField{}
[PXDBString(10,IsUnicode=true)]
[PXUIField(DisplayName=“Color”)]
[PXStringList(“红色、蓝色、其他”)]
[默认值(“红色”)]
公共字符串颜色{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");
}
public void YourDAC\u row selected(PXCache发送方,PXRowSelectedEventArgs e)
{
YourDAC row=e.行作为YourDAC;
if(row==null)返回;
PXUIFieldAttribute.SetVisible(发送方,行,行.颜色=“其他”);
}

我相信,在T200培训课程中,有几个关于
PXUIFieldAttribute.SetVisible
方法的示例。

谢谢,这很有效!展示和隐藏呢?我想不出如何在PXUIVisibility中获得类似的效果。