【问题标题】:How to conditionally hide PXTabItem inside an Acumatica screen?如何在 Acumatica 屏幕内有条件地隐藏 PXTabItem?
【发布时间】:2017-09-21 20:21:52
【问题描述】:

我想隐藏销售订单行佣金选项卡,但我只想隐藏特定角色的选项卡。这可能吗?

【问题讨论】:

    标签: acumatica acumatica-kb


    【解决方案1】:

    选项 #1:使用 PXTabItem VisibleExp 属性

    这种方法非常适用于相当简单的声明性条件,这些条件利用来自特定容器的输入控制值(PXForm 最常用于这种情况)。

    例如,要为 TR 类型的订单隐藏“销售订单佣金”选项卡,您应按如下方式编写 VisibleExp

    <px:PXTabItem Text="Commissions"
                  VisibleExp="DataControls[&quot;edOrderType&quot;].Value!=TR" 
                  BindingContext="form" 
                  RepaintOnDemand="false">
    

    快速概览上面代码 sn-p 中使用的 3 个 PXTabItem 属性:

    • BindingContext:承载输入控件的容器控件的 ID,用于计算 PXTabItem 的可见属性
    • VisibleExp:计算 PXTabItem 可见属性的表达式
    • RepaintOnDemand:控制PXTab控件的初始化。当设置为 True(默认值)时,PXTabItem 只会在用户选择 Tab 时初始化,否则,它将在每次回发时初始化。

    选项 #2:在代码中隐藏放置在 PXTabItem 内的所有控件

    毫无疑问,与 PXTabItem VisibleExp 属性相比,这种方法在灵活性方面向前迈进了一步。它允许您在业务逻辑中组合更复杂的条件,而不依赖于网页。

    要隐藏销售订单佣金选项卡,您应该订阅 SOOrder 的 RowSelected 处理程序,如下所示:

    public class SOOrderEntryExt : PXGraphExtension<SOOrderEntry>
    {
        public void SOOrder_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
        {
            SOOrder order = (SOOrder)e.Row;
            if (order == null) return;
    
            bool financeRoleMember = System.Web.Security.Roles.IsUserInRole("FINANCE");
            Base.SalesPerTran.AllowSelect = financeRoleMember;
            PXUIFieldAttribute.SetVisible<SOOrder.salesPersonID>(Base.Document.Cache, null, financeRoleMember);
        }
    }
    

    AllowSelect 属性设置为 false,SalesPerTran 数据视图将自动隐藏每个 PXGrid,其 DataMember属性设置为 SalesPerTran。由于 Sales Order Commissions 选项卡还包含 Default Salesperson 查找,我们需要另外将 PXUIFieldAttributefalse 属性设置为 false strong> 装饰 SOOrder SalesPersonID 字段。 PXTabItem 在不包含可见控件时自动隐藏。

    请注意,类似于 PXTabItem VisibleExp 属性,为了使此方法正常运行,您必须始终将 RepaintOnDemand 设置为 false 用于您有条件地隐藏的 PXTabItem。对于这个特定的示例,我们可以跳过这一步,因为在原始 SO301000.aspx 中将 RepaintOnDemand 设置为 false > Acumatica 分发的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-09
      • 2011-08-13
      • 2012-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2023-02-22
      相关资源
      最近更新 更多