Acumatica中Override Contact未勾选时如何禁用自定义Attention字段
解决方案
你只需要给Attention字段的PXUIField特性添加启用状态绑定即可,Acumatica框架会自动监听绑定字段的状态联动控制是否可编辑:
方案1:直接通过特性绑定(推荐)
假设你页面上Override Contact复选框绑定的DAC字段名为OverrideContact(如果实际名称不同请自行替换),修改你的字段配置代码如下:
[PXDBString(50)] [PXUIField(DisplayName="Contact", Enabled = typeof(Current<OverrideContact>))] [PXSelector(typeof(Search2<Contact.displayName, LeftJoin<BAccount, On<BAccount.bAccountID, Equal<Contact.bAccountID>>>, Where<Contact.contactType, Equal<ContactTypesAttribute.person>>>))] [PXRestrictor(typeof( Where<Current<PMContact.customerID>, Like<Contact.bAccountID>>), "")]
修改后发布自定义即可生效,当OverrideContact为未勾选(false)时,字段会自动禁用,勾选后自动启用。
方案2:通过RowSelected事件控制
如果你的控制逻辑更复杂(比如还要同时判断其他字段的状态),可以在对应Graph的RowSelected事件中手动控制字段可用性:
protected void PMContact_RowSelected(PXCache cache, PXRowSelectedEventArgs e) { PMContact row = e.Row as PMContact; if (row == null) return; // 控制Attention字段启用状态和OverrideContact保持一致 PXUIFieldAttribute.SetEnabled<PMContact.attention>(cache, row, row.OverrideContact == true); }
相关截图:
:Attention字段界面
:Override Contact复选框界面
内容的提问来源于stack exchange,提问作者Andrew Aiello
相关产品推荐
相关产品推荐

