acumatica - 隐藏/禁用基于输入字段的其他字段

标签 acumatica

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

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

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

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

最佳答案

请求的行为可以通过一系列事件处理程序或一组属性来完成。您可以在 T200 培训类(class)中找到有关如何订阅 RowSelected 和 FieldUpdated 事件的几个示例,网址为 Acumatica University。和 Acumatica Open University

对于您的特定场景,使用字段属性是一种更方便、更简单的选择。我建议将下拉菜单的 CommitChanges 设置为 True,这样 Comments 字段会在用户更新 Color 后立即被清除和禁用/启用.此外,在 Comments 之后声明 Color 非常重要,因此框架将首先处理 Comments 字段,并始终在 Color 字段更新后清除当前的 Comments 值。

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 培训类(class)中,有几个关于 PXUIFieldAttribute.SetVisible 方法的示例。

关于acumatica - 隐藏/禁用基于输入字段的其他字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44379202/

相关文章:

customization - 如何将自定义字段添加到 ARInvoice 客户选择器中?

panel - Acumatica Smart Panel 打开时不显示数据

acumatica - 从用户界面动态隐藏选项卡

acumatica - 使用 Acumatica Rest API 创建或检索客户付款方式时出现问题

acumatica - 自动刷新是 Acumatica 网格复选框列的自然行为吗?

javascript - 如何在 Acumatica 中使用 javascript?

acumatica - 注意 InventoryItem DAC 中的属性

acumatica - 扩展通用查询以显示记录数

acumatica - 将 "AllowUpload"添加到 Acumatica 客户门户的 MyCart 页面

erp - 刷新 Acumatica 中的 View