2017-06-05 124 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