2017-06-05 161 views
1

我想根据另一个字段的条件隐藏或更新UI上的字段。根据输入字段隐藏/禁用其他字段

举例来说,如果我有一个名为色域:

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

和文本字段评论仅供所示,当“其它”被选中,这是怎么做到的呢?

回答

2

请求的行为既可以通过一系列事件处理程序也可以通过一系列属性来完成。您可以在Acumatica UniversityAcumatica Open University

找到关于如何订阅的T200培训班RowSelected和FieldUpdated事件的几个例子,可以与现场去属性为您的特定情况下更方便和更容易的方式选择。我会建议设置CommitChanges为下拉,所以注释字段被清除,并且在用户更新颜色后立即禁用/启用。另外,在注释之后声明你的颜色是非常重要的,所以框架将首先处理注释字段,并且在颜色字段更新后总是清除当前的注释值。

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方法的几个例子。

+0

谢谢,这工作!怎么显示和隐藏?我无法弄清楚如何获得与PXUIVisibility类似的效果。 –

+0

查看上面更新的答案。 – RuslanDev

相关问题