[英]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);
}
如何防止这种行为? PXUIFieldAttribute.SetVisible和PXUIFieldAttribute.SetVisibility之间有什么区别?
Visible属性确定列在网格(窗体,树等)中是否可见, Visibility属性确定列在网格列配置对话框中是否可见。
如您所知,用户可以使用用户定义的网格列配置覆盖Visible = False属性。
为了防止用户覆盖Visible属性,必须同时设置Visible和Visibility 。
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.