Sök…


Introduktion

I det här ämnet kommer du att lära dig att ändra fältattribut som ärvts från PXStringList- eller PXIntList-attributen. Det demonstrerade tillvägagångssättet kommer att se till att inte bryta funktionaliteten för basen Acumatica ERP-produkten och kräver minimalt underhåll, om något, medan du uppgraderar dina anpassningar till en nyare version av Acumatica.

Anmärkningar

I alla prover ovan har du gjort ändringar i både _AllowedValues och _AllowedLabels matriserna. Om din uppgift är att endast ändra etikett (externt värde) på en listrutan, överväg att använda översättningsordböcker. För mer information om översättningsordlistor se Acumatica ERP-dokumentation

Ändra äktenskapliga statyer

I det här exemplet kommer du att ändra civilstånd rullgardinsmenyn finns på Kontakter bildar (CR302000): ange bildbeskrivning här

Lägga till nya objekt i PXStringListAttribute efterträdaren

Det bästa sättet att utöka rullgardinsföremål som är hårdkodade inuti ett attribut som ärvts från PXStringList- eller PXIntList-attributet är genom att öka storleken på _AllowedValues och _AllowedLabels i konstruktorn för ditt anpassade fältattribut:

[PXLocalizable(Messages.Prefix)]
public static class MaritalStatusesMessages
{
    public const string CommonLaw = "Living common law";
    public const string Separated = "Separated (not living common law)";
    public const string DivorcedNoCommonLaw = "Divorced (not living common law)";
    public const string NeverMarried = "Never Married";
}

public class MaritalStatusesCst1Attribute : MaritalStatusesAttribute
{
    public const string CommonLaw = "L";
    public const string Separated = "P";
    public const string NeverMarried = "N";

    public MaritalStatusesCst1Attribute()
    {
        Array.Resize(ref _AllowedValues, _AllowedValues.Length + 3);
        _AllowedValues[_AllowedValues.Length - 3] = CommonLaw;
        _AllowedValues[_AllowedValues.Length - 2] = Separated;
        _AllowedValues[_AllowedValues.Length - 1] = NeverMarried;
        Array.Resize(ref _AllowedLabels, _AllowedLabels.Length + 3);
        _AllowedLabels[_AllowedLabels.Length - 3] = MaritalStatusesMessages.CommonLaw;
        _AllowedLabels[_AllowedLabels.Length - 2] = MaritalStatusesMessages.Separated;
        _AllowedLabels[_AllowedLabels.Length - 1] = MaritalStatusesMessages.NeverMarried;
    }
}

I exemplet ovan ökade du storleken på _AllowedValues och _AllowedLabels att lägga till ytterligare _AllowedLabels objekt i rullgardinslistan för äktenskaplig status . Interna värden, lagrade i _AllowedValues , kommer att tilldelas DAC-fält och sparas i databasen, och externa värden från _AllowedValues representerar interna värden i UI.

För att testa resultaten, i tillägget Contact DAC, dekorera MaritalStatus- fältet med MaritalStatusesCst1Attribute :

public class ContactExt : PXCacheExtension<Contact>
{
    [PXRemoveBaseAttribute(typeof(MaritalStatusesAttribute))]
    [PXMergeAttributes(Method = MergeMethod.Append)]
    [MaritalStatusesCst1]
    public string MaritalStatus { get; set; }
}

Nu finns det 7 objekt i listrutan för äktenskaplig status :

ange bildbeskrivning här

Ta bort objekt som deklareras i PXStringListAttribute efterträdare

För att ta bort specifika rullgardinsföremål, som hårdkodades inuti ett attribut som ärvts från PXStringList- eller PXIntList-attributet, måste du minska storleken på _AllowedValues och _AllowedLabels i konstruktorn för ditt anpassade fältattribut:

public class MaritalStatusesCst2Attribute : MaritalStatusesCst1Attribute
{
    public MaritalStatusesCst2Attribute()
    {
        string[] allowedValues = new string[_AllowedValues.Length - 1];
        string[] allowedLabels = new string[_AllowedLabels.Length - 1];
        Array.Copy(_AllowedValues, 1, allowedValues, 0, _AllowedValues.Length - 1);
        Array.Copy(_AllowedLabels, 1, allowedLabels, 0, _AllowedValues.Length - 1);
        _AllowedValues = allowedValues;
        _AllowedLabels = allowedLabels;
    }
}

I exemplet ovan minskade du storleken på _AllowedValues och _AllowedLabels att ta bort enstaka objekt från listrutan för äktenskaplig status .

För att testa resultaten, i tillägget Contact DAC, dekorera MaritalStatus- fältet med MaritalStatusesCst2Attribute :

public class ContactExt : PXCacheExtension<Contact>
{
    [PXRemoveBaseAttribute(typeof(MaritalStatusesAttribute))]
    [PXMergeAttributes(Method = MergeMethod.Append)]
    [MaritalStatusesCst2]
    public string MaritalStatus { get; set; }
}

Nu finns det bara 6 artiklar: 3 original och 3 anpassade - i rullgardinslistan för äktenskaplig status :

ange bildbeskrivning här

För att ersätta artiklar som deklarerats i PXStringListAttribute efterträdare

För att ersätta specifikt listrutan, ursprungligen hårkodad inuti ett attribut som ärvts från PXStringList- eller PXIntList-attributet, måste du uppdatera lämpligt värde i _AllowedValues och _AllowedLabels i konstruktorn för ditt anpassade fältattribut:

public class MaritalStatusesCst3Attribute : MaritalStatusesCst2Attribute
{
    public const string DivorcedNoCommonLaw = "V";

    public MaritalStatusesCst3Attribute()
    {
        _AllowedValues[Array.IndexOf(_AllowedValues, Divorced)] = DivorcedNoCommonLaw;
        _AllowedLabels[Array.IndexOf(_AllowedLabels, Messages.Divorced)] = MaritalStatusesMessages.DivorcedNoCommonLaw;
    }
}

I exemplet ovan ersatte du D - Divorced artikel med V - Divorced (inte levande gemensam lag) i _AllowedValues respektive _AllowedLabels matriserna. Genom att göra det ersätter vi både interna och externa värden för en rullgardinsmeny.

För att testa resultaten, i tillägget Contact DAC, dekorera MaritalStatus- fältet med MaritalStatusesCst3Attribute :

public class ContactExt : PXCacheExtension<Contact>
{
    [PXRemoveBaseAttribute(typeof(MaritalStatusesAttribute))]
    [PXMergeAttributes(Method = MergeMethod.Append)]
    [MaritalStatusesCst3]
    public string MaritalStatus { get; set; }
}

Nu finns det bara 6 artiklar: 2 original, 3 anpassade och 1 ersatt - i rullgardinslistan för äktenskaplig status :

ange bildbeskrivning här



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow