繁体   English   中英

动态隐藏网格列

[英]Hide grid columns dynamically

我试图动态隐藏网格选项卡中的列,在用户进入列配置并决定显示列之前,它可以正常工作。

用户执行此操作后,我的代码将不再影响列的可见性。

作为POC,我尝试这样做:

   public PXAction<POOrder> HIDEFIELDS;
    [PXUIField(DisplayName = "hide fields")]
    [PXButton(CommitChanges = true)]
    public virtual void hIDEFIELDS()
    {
        PXUIFieldAttribute.SetVisible<POLineExt.usrFinalDestination>(Base.Transactions.Cache, null, false);
        PXUIFieldAttribute.SetVisible<POLineExt.usrDateExportation>(Base.Transactions.Cache, null, false);
        PXUIFieldAttribute.SetVisible<POLineExt.usrContainerNbr>(Base.Transactions.Cache, null, false);
    }

public PXAction<POOrder> Showfields;
[PXUIField(DisplayName = "showfields")]
[PXButton(CommitChanges = true)]
public virtual void showfields()
{
    PXUIFieldAttribute.SetVisible<POLineExt.usrFinalDestination>(Base.Transactions.Cache, null, true);
    PXUIFieldAttribute.SetVisible<POLineExt.usrDateExportation>(Base.Transactions.Cache, null, true);
    PXUIFieldAttribute.SetVisible<POLineExt.usrContainerNbr>(Base.Transactions.Cache, null, true);
}

http://recordit.co/5lYGmjOjHl

如何防止这种行为? PXUIFieldAttribute.SetVisible和PXUIFieldAttribute.SetVisibility之间有什么区别?

Visible属性确定列在网格(窗体,树等)中是否可见, Visibility属性确定列在网格列配置对话框中是否可见。

如您所知,用户可以使用用户定义的网格列配置覆盖Visible = False属性。

为了防止用户覆盖Visible属性,必须同时设置VisibleVisibility

PXCache cache = Base.Transactions.Cache;
PXUIFieldAttribute.SetVisibility<POLineExt.usrFinalDestination>(cache, null, PXUIVisibility.Invisible);
PXUIFieldAttribute.SetVisible<POLineExt.usrFinalDestination>(cache, null, false);

您的代码建议您要对此进行动态更改,但我认为Visibility属性仅支持静态更改。 静态是指该调用在页面加载时仅工作一次,并且将忽略后续调用。 约定是将这些调用放在图扩展或新自定义图的构造函数的Initialize()方法重写中:

public override void Initialize()
{
    // Extend base graph to set visibility property here.
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM