【问题标题】:RowSelecting does not execute行选择不执行
【发布时间】:2019-09-20 03:42:25
【问题描述】:

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

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

我的目标是禁用基于某些 BQL 的字段。执行 BQL 和禁用该字段的最佳方法是什么?我应该使用 RowSelected 吗?文档说要避免它。就我而言,我指的是 SO 发票输入表格...特别是 SOInvoice DAC。

【问题讨论】:

    标签: acumatica


    【解决方案1】:

    您可以在图表中扩展 DAC 以添加 PXUIEnabled 属性来执行此操作。

    我更新了我的示例以包含一个控制启用和禁用另一个字段的非数据绑定字段。

    在 SOInvoiceExt 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
    }
    

    然后我将新的自定义字段添加到屏幕上。确保将 CommitChanges 设置为 True。

    然后在 Graph Extension 中,我将 PXUIEnabled 属性与 CachedAttached 事件合并

    [PXUIEnabled(typeof(Where<SOInvoiceExt.usrExtRefNbrDisabled, NotEqual<True>>))]
    [PXMergeAttributes(Method = MergeMethod.Merge)]
    protected virtual void SOInvoice_ExtRefNbr_CacheAttached(PXCache cache)
    { }
    

    我能够选中/取消选中该框并启用/禁用该字段。

    这是一篇关于该主题的旧博文:https://asiablog.acumatica.com/2016/11/pxuienabled-and-pxuirequired-attributes.html

    【讨论】:

      【解决方案2】:

      执行此操作的最佳方法可能是使您的 NonDB 字段成为计算字段,然后从 RowSelected 中设置启用。 https://www.acumatica.com/blog/using-the-pxformula-attribute-to-simplify-your-code/

      否则,在 FieldDefaulting 中创建 BQl 查询。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多