Zoeken…


Invoering

In dit onderwerp leert u hoe u veldkenmerken kunt wijzigen die zijn overgenomen van de kenmerken PXStringList of PXIntList. De gedemonstreerde aanpak zorgt ervoor dat de functionaliteit van het basis Acumatica ERP-product niet wordt verbroken en vereist minimaal onderhoud, indien aanwezig, tijdens het upgraden van uw aanpassingen naar een nieuwere versie van Acumatica.

Opmerkingen

In alle bovenstaande voorbeelden hebt u wijzigingen aangebracht in zowel de _AllowedValues als _AllowedLabels arrays. Als het uw taak is om alleen het label (externe waarde) van een vervolgkeuzelijst te wijzigen, overweeg dan om Vertaalwoordenboeken te gebruiken. Zie Acumatica ERP-documentatie voor meer informatie over vertaalwoordenboeken

Huwelijkse status wijzigen

In dit voorbeeld wijzigt u de vervolgkeuzelijst Burgerlijke staat op het formulier Contacten (CR302000): voer hier de afbeeldingsbeschrijving in

Nieuwe items toevoegen aan de opvolger van PXStringListAttribute

De beste manier om vervolgkeuzelijsten uit te breiden die hard zijn gecodeerd in een kenmerk dat is overgenomen van het kenmerk PXStringList of PXIntList, is door de arrays _AllowedValues en _AllowedLabels in de constructor van uw aangepaste _AllowedValues _AllowedLabels :

[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;
    }
}

In het bovenstaande voorbeeld hebt u de arrays _AllowedValues en _AllowedLabels om 3 extra items toe te voegen aan de vervolgkeuzelijst Burgerlijke staat . Interne waarden, opgeslagen in de array _AllowedValues , worden toegewezen aan DAC-velden en opgeslagen in de database, en externe waarden uit de array _AllowedValues vertegenwoordigen interne waarden in de gebruikersinterface.

Om de resultaten te testen, decoreert u in de Contact DAC-extensie het veld MaritalStatus met de MaritalStatusesCst1Attribute :

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

Nu staan er 7 items in de vervolgkeuzelijst Burgerlijke staat :

voer hier de afbeeldingsbeschrijving in

Items verwijderen die zijn aangegeven in de opvolger van PXStringListAttribute

Om een specifiek vervolgkeuzemenu te verwijderen, dat hardgecodeerd was in een kenmerk dat is overgenomen van het kenmerk PXStringList of PXIntList, moet u de grootte van de arrays _AllowedValues en _AllowedLabels in de constructor van uw aangepaste _AllowedLabels :

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;
    }
}

In het bovenstaande voorbeeld hebt u de grootte van de arrays _AllowedValues en _AllowedLabels om Eén item uit de vervolgkeuzelijst Burgerlijke staat te verwijderen.

Om de resultaten te testen, decoreert u in de Contact DAC-extensie het veld MaritalStatus met het MaritalStatusesCst2Attribute :

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

Nu zijn er slechts 6 items: 3 origineel en 3 aangepast - in de vervolgkeuzelijst Burgerlijke staat :

voer hier de afbeeldingsbeschrijving in

Items vervangen die zijn opgegeven in de opvolger van PXStringListAttribute

Om een specifiek vervolgkeuzemenu te vervangen, oorspronkelijk gecodeerd in een kenmerk dat is overgenomen van het kenmerk PXStringList of PXIntList, moet u de juiste waarde bijwerken in de arrays _AllowedValues en _AllowedLabels in de constructor van uw aangepaste _AllowedLabels :

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;
    }
}

In het bovenstaande voorbeeld hebt u het item D - Divorced vervangen door V - Divorced (niet volgens common law) in de arrays _AllowedValues en _AllowedLabels . Hiermee vervangen we zowel interne als externe waarden van een vervolgkeuzelijst.

Om de resultaten te testen, decoreert u in de Contact DAC-extensie het veld MaritalStatus met de MaritalStatusesCst3Attribute :

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

Nu zijn er slechts 6 items: 2 origineel, 3 aangepast en 1 vervangen - in de vervolgkeuzelijst Burgerlijke staat :

voer hier de afbeeldingsbeschrijving in



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow