Acumatica 行选择不执行

Acumatica 行选择不执行,acumatica,Acumatica,我使用RowSelecting事件来执行BQL查询。我选择此事件,因为在RowSelected事件中添加BQL是不可取的。我的目的是分配一个非DB绑定字段(布尔值),用于启用/禁用字段。在RowSelected事件期间,将读取该值,并基于该值启用/禁用特定字段 在使用调试器时,我注意到首次打开表单时不会触发RowSelecting事件。取消按钮导致事件触发。然后我注意到api文档…RowSelected&FieldSelecting事件发生在事件序列-记录显示期间。没有提到行选择 我的目标是禁用

我使用RowSelecting事件来执行BQL查询。我选择此事件,因为在RowSelected事件中添加BQL是不可取的。我的目的是分配一个非DB绑定字段(布尔值),用于启用/禁用字段。在RowSelected事件期间,将读取该值,并基于该值启用/禁用特定字段

在使用调试器时,我注意到首次打开表单时不会触发RowSelecting事件。取消按钮导致事件触发。然后我注意到api文档…RowSelected&FieldSelecting事件发生在事件序列-记录显示期间。没有提到行选择


我的目标是禁用基于某些BQL的字段。执行BQL和禁用字段的最佳方式是什么?我应该使用RowSelected吗?文件上说要避免它。在我的例子中,我指的是SO发票输入表单…特别是SOInvoice DAC。

您可以在图中扩展DAC以添加PXUIEnabled属性来完成此操作

我更新了我的示例,添加了一个非数据绑定字段,用于控制启用和禁用另一个字段

在SOINVOICEXT DAC扩展中,我有

public class SOInvoiceExt : PXCacheExtension<PX.Objects.SO.SOInvoice>
{
    #region UsrExtRefNbrDisabled 
    [PXBool]
    [PXUIField(DisplayName = "ExtRefNbr Disabled?")]
    public virtual bool? UsrExtRefNbrDisabled { get; set; }
    public abstract class usrExtRefNbrDisabled : PX.Data.BQL.BqlBool.Field<usrExtRefNbrDisabled> { }
    #endregion
}
公共类SOINVOICEXT:PXCacheExtension
{
#区域USREXTREFNBR已禁用
[PXBool]
[PXUIField(DisplayName=“ExtRefNbr已禁用?”)]
公共虚拟bool?usrextrefnbr已禁用{get;set;}
公共抽象类usrextrefnbrbdisabled:PX.Data.BQL.BqlBool.Field{}
#端区
}
然后我在屏幕上添加了新的自定义字段。确保将CommitChanges设置为True

然后在图形扩展中,我将PXUIEnabled属性与CachedAttached事件合并

[PXUIEnabled(typeof(Where<SOInvoiceExt.usrExtRefNbrDisabled, NotEqual<True>>))]
[PXMergeAttributes(Method = MergeMethod.Merge)]
protected virtual void SOInvoice_ExtRefNbr_CacheAttached(PXCache cache)
{ }
[PXUIEnabled(typeof(Where))]
[PXMergeAttributes(Method=MergeMethod.Merge)]
受保护的虚拟void SOInvoice\u ExtRefNbr\u CacheAttached(PXCache缓存)
{ }
我能够选中/取消选中该框,并且它启用/禁用了该字段


下面是一篇关于这个主题的老博文:

最好的方法可能是将您的NonDB字段设置为计算字段,然后从RowSelected设置为enabled。

否则,在FieldDefaulting中创建BQl查询