我正在尝试将“员工”选择器添加到“网格”中的“日记帐交易”屏幕(GL301000)中。我使用GLTran DAC作为基础创建了DAC扩展代码。 这是我的代码:
using PX.Common;
using PX.Data.ReferentialIntegrity.Attributes;
using PX.Data;
using PX.Objects.AP;
using PX.Objects.CM;
using PX.Objects.CR;
using PX.Objects.CS;
using PX.Objects.EP;
using PX.Objects.GL;
using PX.Objects.IN;
using PX.Objects.PM;
using PX.Objects.TX;
using PX.Objects;
using System.Collections.Generic;
using System;
namespace PX.Objects.GL
{
public class GLTranExt : PXCacheExtension<PX.Objects.GL.GLTran>
{
#region Resource
public class emp: PX.Data.Constant<string>
{
public emp() : base("EMPHOUR") { }
}
public abstract class resource: PX.Data.IBqlField
{
}
protected int? _Resource;
[PXDBInt]
[PXDefault()]
[PXUIField(DisplayName="Resource")]
[PXSelector(typeof(Search2<BAccount.bAccountID,
InnerJoin<Vendor,
On<Vendor.bAccountID,
Equal<BAccount.bAccountID>>>,
Where<Vendor.vendorClassID,
Equal<emp>>>),
SubstituteKey = typeof(BAccount.acctName))]
public virtual int? Resource
{
get
{
return this._Resource;
}
set
{
this._Resource = value;
}
}
#endregion
}
}
当我尝试将字段添加到网格时出现错误,这是我的错误:
Error: An invalid selector column has been provided.
Parameter name: fieldList
有人能指出我正确的方向吗?我知道要显示正确的员工姓名,您必须在Vendor表和BAccount表中使用where或join。但是,当我尝试使用LeftJoin方法时,我收到一条错误,指出无法绑定多部分标识符。
答案 0 :(得分:0)
我找到了解决方案。
我需要向PXDefault添加持久检查,并将CommitChanges属性更改为true。
以下是正确的代码:
public class GLTranExt : PXCacheExtension<PX.Objects.GL.GLTran>
{
#region Resource
public class emp: PX.Data.Constant<string>
{
public emp() : base("EMPHOUR") { }
}
public abstract class resource: PX.Data.IBqlField
{
}
protected int? _Resource;
[PXDBInt]
[PXDefault(PersistingCheck=PXPersistingCheck.Nothing)]
[PXUIField(DisplayName="Resource")]
[PXSelector(typeof(Search2<BAccount.bAccountID,
InnerJoin<Vendor,
On<Vendor.bAccountID,
Equal<BAccount.bAccountID>>>,
Where<Vendor.vendorClassID,
Equal<emp>>>),
SubstituteKey = typeof(BAccount.acctName))]
public virtual int? Resource
{
get
{
return this._Resource;
}
set
{
this._Resource = value;
}
}
#endregion
}
还记得创建一个DB脚本,将Resource字段添加到值为INT的GLTran表中。