Acumatica 我可以在PXSelector中为字段设置别名吗

Acumatica 我可以在PXSelector中为字段设置别名吗,acumatica,Acumatica,我有一个选择器,定义如下: [PXSelector(typeof(Search2<xTACTaxDocument.iD, InnerJoin<xTACEntityMappingEIN, On<xTACTaxDocument.clientEINID, Equal<xTACEntityMappingEIN.iD>>,

我有一个选择器,定义如下:

[PXSelector(typeof(Search2<xTACTaxDocument.iD, 
                              InnerJoin<xTACEntityMappingEIN, 
                                  On<xTACTaxDocument.clientEINID, Equal<xTACEntityMappingEIN.iD>>,
                              InnerJoin<xTACEntityMappingEIN1, 
                                  On<xTACTaxDocument.investmentEINID, Equal<xTACEntityMappingEIN1.iD>>>>>),
                typeof(xTACTaxDocument.iD),
                typeof(xTACTaxDocument.formID),
                typeof(xTACTaxDocument.year),
                typeof(xTACEntityMappingEIN.eIN),
                typeof(xTACEntityMappingEIN1.eIN))]
我的问题是——由于原始ein和别名DAC ein字段具有相同的名称——是否可能——仅在显示的网格中——重命名第二个字段?或者,理想情况下,将两者都重命名?我不认为这是智能感知的一个选项

这就是我想要做的(请参见别名字段):


DAC名称必须是表“别名”的唯一名称。不能像在SQL中那样设置别名,但可以声明一个继承源类的新类,为查询赋予新的“名称”。我在这里也有类似的问答:

在继承的类中,可以根据需要更改字段的显示名称,以“别名”重复的字段名称

下面是一个未经测试的快速示例:

[Serializable]
public class xTACEntityMappingEINClient : xTACEntityMappingEIN
{
    //Override field to set display name = "ClientEIN"
    //[PXUIField(DisplayName = "ClientEIN")]
}

[Serializable]
public class xTACEntityMappingEINInvestment : xTACEntityMappingEIN
{
    //Override field to set display name = "InvestmentEIN"
    //[PXUIField(DisplayName = "InvestmentEIN")]
}

[PXSelector(typeof(Search2<xTACTaxDocument.iD,
    InnerJoin<xTACEntityMappingEINClient,
        On<xTACTaxDocument.clientEINID, Equal<xTACEntityMappingEINClient.iD>>,
    InnerJoin<xTACEntityMappingEINInvestment , 
        On<xTACTaxDocument.investmentEINID, Equal<xTACEntityMappingEINInvestment.iD>>>>>),
                typeof(xTACTaxDocument.iD),
                typeof(xTACTaxDocument.formID),
                typeof(xTACTaxDocument.year),
                typeof(xTACEntityMappingEINClient.eIN),
                typeof(xTACEntityMappingEINInvestment .eIN))]
[可序列化]
公共类XtaceEntityMappingEincluent:XtaceEntityMappingEin
{
//覆盖字段以设置display name=“ClientEIN”
//[PXUIField(DisplayName=“ClientEIN”)]
}
[可序列化]
公共类XtaceEntityMappingEin投资:XtaceEntityMappingEin
{
//覆盖字段以设置显示名称=“InvestmentEIN”
//[PXUIField(DisplayName=“InvestmentEIN”)]
}
[PX选择器(类型)(搜索2),
类型(xTACTaxDocument.iD),
类型(xTACTaxDocument.formID),
类型(xTACTaxDocument.year),
typeof(xTACEntityMappingEINClient.eIN),
类型(xTACEntityMappingEINInvestment.eIN))]

唯一的选择是在XtaceEntityMappingEIN1 DAC中额外覆盖EIN属性,以在PXUIFieldAttribute中使用不同的显示名称:

[Serializable]
public class xTACEntityMappingEIN1 : xTACEntityMappingEIN
{
    public abstract new class iD : IBqlField { }
    public abstract new class eIN : IBqlField { }

    [PXDBString(50, IsUnicode = true, IsKey = true)]
    [PXUIField(DisplayName = "Investment EIN")]
    public override string EIN { get; set; }
}
请注意,在上面的代码片段中,我为EIN字段随机选择了字符串类型。理想情况下,XtaceEntityMappingEin和XtaceEntityMappingEin1中的EIN字段属性应接近相同,但PXUIFieldAttribute的DisplayName属性值除外

[Serializable]
public class xTACEntityMappingEINClient : xTACEntityMappingEIN
{
    //Override field to set display name = "ClientEIN"
    //[PXUIField(DisplayName = "ClientEIN")]
}

[Serializable]
public class xTACEntityMappingEINInvestment : xTACEntityMappingEIN
{
    //Override field to set display name = "InvestmentEIN"
    //[PXUIField(DisplayName = "InvestmentEIN")]
}

[PXSelector(typeof(Search2<xTACTaxDocument.iD,
    InnerJoin<xTACEntityMappingEINClient,
        On<xTACTaxDocument.clientEINID, Equal<xTACEntityMappingEINClient.iD>>,
    InnerJoin<xTACEntityMappingEINInvestment , 
        On<xTACTaxDocument.investmentEINID, Equal<xTACEntityMappingEINInvestment.iD>>>>>),
                typeof(xTACTaxDocument.iD),
                typeof(xTACTaxDocument.formID),
                typeof(xTACTaxDocument.year),
                typeof(xTACEntityMappingEINClient.eIN),
                typeof(xTACEntityMappingEINInvestment .eIN))]
[Serializable]
public class xTACEntityMappingEIN1 : xTACEntityMappingEIN
{
    public abstract new class iD : IBqlField { }
    public abstract new class eIN : IBqlField { }

    [PXDBString(50, IsUnicode = true, IsKey = true)]
    [PXUIField(DisplayName = "Investment EIN")]
    public override string EIN { get; set; }
}