选项#1:使用 PXTabItem VisibleExp 属性
这种方法与相当简单的声明条件完美配合,该条件利用来自特定容器的输入控制值(PXForm最常用于这种情况)。
例如,要隐藏以下订单的“销售订单佣金”选项卡TR输入,你应该撰写可视化表达式如下:
<px:PXTabItem Text="Commissions"
VisibleExp="DataControls["edOrderType"].Value!=TR"
BindingContext="form"
RepaintOnDemand="false">
快速概览 3PXT选项卡项上面代码片段中使用的属性:
-
绑定上下文:托管用于计算 PXTabItem 可见属性的输入控件的容器控件的 ID
-
可视化表达式:计算 PXTabItem 可见属性的表达式
-
按需重绘:控制PXTab控件的初始化。当设置为 True(默认值)时,PXTabItem 仅当用户选择选项卡时才会初始化,否则,它将在每次回发时初始化。
选项#2:在代码中隐藏放置在 PXTabItem 内的所有控件
毫无疑问,与传统方法相比,这种方法在灵活性方面向前迈进了一步。PXTabItem 可见Exp财产。它允许您在业务逻辑中编写更复杂的条件,并且不依赖于网页。
要隐藏“销售订单佣金”选项卡,您应该订阅 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);
}
}
With 允许选择属性设置为 false,则每人销售量数据视图将自动隐藏每个PXGrid, whose 数据成员属性设置为每人销售量。由于销售订单佣金选项卡还包含默认销售人员查找,因此我们需要另外设置Visible财产给false为了PXUI字段属性装饰 SOOrder SalesPersonID 字段。PXT选项卡项当它不包含可见控件时自动隐藏。
请告知,类似于PXTabItem 可见Exp属性,为了使这种方法正常工作,您必须始终设置按需重绘 to false为了PXT选项卡项你有条件地隐藏。对于这个特定的例子,我们可以跳过这一步,因为按需重绘被设定为false在原来的SO301000.aspx文件由 Acumatica 分发。