我正在尝试根据另一个字段自动填充一个字段。我有一个用于合同的选择器字段,并且为主要经理创建了一个经理1字段,该字段在“合同”屏幕中捕获。
打开Manager 1的选择器字段时,我可以获得正确的结果。它将填充合同代码和与其相关联的Manager。但是,我希望它在选择合同后自动填写该字段。我尝试使用PXDefault,但没有任何运气。到目前为止,下面的代码是我一直在工作的代码:
[PXInt]
[PXUIField(DisplayName="Manager 1")]
[PXSelector(typeof(Search2<PX.Objects.CR.BAccount.bAccountID,
InnerJoin<JPMContract,
On<JPMContract.contractMgrBAccountID,
Equal<PX.Objects.CR.BAccount.bAccountID>>>>),
typeof(JPMContract.contractCode),
typeof(PX.Objects.CR.BAccount.acctCD),
typeof(PX.Objects.CR.BAccount.acctName),
SubstituteKey = typeof(PX.Objects.CR.BAccount.acctCD),
DescriptionField = typeof(PX.Objects.CR.BAccount.acctName))]
同样,当我打开选择器字段并选择相应的结果时,我得到了想要的结果,但是一旦选择了合同,我希望它为我自己做。有什么建议吗?
更新: 我得到它只返回选择器中需要的一个结果,但是它仍然没有在字段中填充该结果。
[PXInt]
[PXSelector(typeof(Search2<PX.Objects.CR.BAccount.bAccountID,
InnerJoin<JPMContract,
On<JPMContract.contractMgrBAccountID,
Equal<PX.Objects.CR.BAccount.bAccountID>>>,
Where<JPMContract.jPMContractID, Equal<Current<JPMSubContract.jPMContractID>>>>),
typeof(JPMContract.contractCode),
typeof(PX.Objects.CR.BAccount.acctCD),
typeof(PX.Objects.CR.BAccount.acctName),
SubstituteKey = typeof(PX.Objects.CR.BAccount.acctCD),
DescriptionField = typeof(PX.Objects.CR.BAccount.acctName))]
[PXDefault(typeof(Search2<PX.Objects.CR.BAccount.bAccountID,
InnerJoin<JPMContract,
On<JPMContract.contractMgrBAccountID,
Equal<PX.Objects.CR.BAccount.bAccountID>>>,
Where<JPMContract.jPMContractID, Equal<Current<JPMSubContract.jPMContractID>>>>))]
[PXUIField(DisplayName="Manager 1")]
答案 0 :(得分:1)
public sealed class DACExt : PXCacheExtension<PrimaryDAC>
{
// For this field in aspx file set CommitChanges=true
[PXDBInt]
[PXSelector(typeof(Search<Table.field0>))]
[PXUIField(DisplayName = "Field 1")]
public int? Field1 { get; set; }
public abstract class field1 : IBqlField { }
[PXInt]
//This line auto-populate a field based on Field1 field
[PXDefault(typeof(Search<Table1.field2, Where<Table1.field0, Equal<Current<Table.field0>>>>), PersistingCheck = PXPersistingCheck.Nothing)]
[PXUIField(DisplayName = "Field 2", Enabled = false)]
public int? Field2 { get; set; }
public abstract class field2 : IBqlField { }
}
public virtual void PrimaryDAC_Field1_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
{
if (e.Row is PrimaryDAC row)
{
sender.SetDefaultExt<DACExt.field2>(e.Row);
}
}