gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:35:19 30 4
gpt4 key购买 nike

我有一个带有 PXTab 的页面控制并希望动态显示或隐藏页面上的单个选项卡。如何在运行时控制选项卡的可见性?

最佳答案

您可以通过以下两种方式之一进行操作:

  • 通过在 ASPX 页面中的 PXTabItem 上设置 VisibleExp 属性
  • 经过
    启用/禁用用作 View 的 AllowSelect 属性
    该选项卡上显示的网格的 DataMember

  • 方法 1 – VisibleExp
    在此方法中,您直接编写选项卡在屏幕的 ASPX 代码中应该可见的条件。
    <px:PXTabItem Text="Tax Agency Settings" BindingContext="tab" 
    VisibleExp="DataControls[&quot;chkTaxAgency&quot;].Value = 1">

    请注意,绑定(bind)上下文很重要,因为它指定要在 VisibleExp 中访问哪个元素的 DataControl。
    此外,DataControls 是用户界面字段值的集合,因此您需要在那里指定控件的 ID(而不是数据访问类字段)。

    但是,这种方法在很多方面都极其有限:
  • 条件检查仅限于 UI 中可用的控件,
    所以不可能根据内部状态来调节可见性
    系统的。
  • 有时这种方法会要求你包括
    “假”数据控件进入 ASPX,只会被检入
    VisibleExp,但实际上不会被用户看到。
  • 似乎不支持复杂的条件,包括 AND/OR。
  • &quot;实体而不是表达式中的普通引号 - 不是
    特别好读。

  • 最重要的是,如果您需要禁用特定文档类型的选项卡,则无法将常量硬编码为 VisibleExp。您将明确地编写如下内容: VisibleExp="DataControls["edDocumentType"].Value != CHK"

    硬编码通常被认为是一种非常糟糕的开发实践。它对代码的可维护性构成了重大威胁:上面的代码将来可能会破坏某些东西。例如,如果您决定将凭证代码表单 CHK 重命名为 CHQ。

    除此之外,当您突然发现需要隐藏选项卡不仅用于检查,而且还用于其他文档类型时,此解决方案不容易推广到这种情况。这是由于缺少上面提到的复杂条件表达式。

    方法 2 – AllowSelect
    这种方法的想法是 - 如果您隐藏选项卡项中的所有控件,则 Acumatica 将自动隐藏没有可见控件的选项卡。

    让我们举个例子:假设您需要根据 SO303000(发票)中选择的文档类型隐藏名为 Applications 的选项卡:

    我们感兴趣的选项卡有一个网格控件,其数据成员设置为“调整”:
    <px:PXTabItem Text="Applications" RepaintOnDemand="false">
    <Template>
    <px:PXGrid ID="detgrid" DataSourceID="ds" SkinID="Details">
    <Levels>
    <px:PXGridLevel DataMember="Adjustments">
    ............
    </px:PXGridLevel>
    </Levels>
    </px:PXGrid>
    </Template>
    </px:PXTabItem>

    并不是说这个选项卡项目只有一个控件 - PXGrid .
    还要注意这里的必需属性 - RepaintOnDemand="false" .此属性指示控件在项目变为可见后刷新选项卡项目内容(和选择数据)。不幸的是,将其设置为 false 会导致某些性能损失。特别是,将更频繁地调用“调整” View 的“选择”。

    目前,Tab 是“智能”的,因为它理解当它的子控件( PXGridLevel )无法对其数据成员执行选择时;在这种情况下,选项卡会从 UI 中隐藏自己。这就是为什么您可以通过设置 AllowSelect 来控制选项卡的可见性的原因。与调整对应的缓存的属性:
    Adjustments.Cache.AllowSelect = 
    doc.DocType != ARDocType.CashSale
    && doc.DocType != ARDocType.CashReturn;

    以上代码写在 ARInvoice_RowSelected图的处理程序,其中 ARInvoice是主 DAC 和页面主记录的类型。所以,每次 ARInvoice被选中,选项卡项目将根据文档类型变为可见或不可见。

    这种方法也有其自身的局限性:
  • 你应该永远记住,禁用是不够的
    AllowSelect,您还应该在需要时启用它。所以你需要
    每次调用事件时评估此属性。
  • 如果不设置 PXTabItem 的 RepaintOnDemand,此方法似乎不起作用
    属性为 false(见上文)。

  • 来源: http://asiablog.acumatica.com/2016/05/hiding-tab-from-user-interface.html

    关于acumatica - 从用户界面动态隐藏选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37030174/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com