acumatica
Items in een vervolgkeuzelijst wijzigen
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):
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 :
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 :
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 :