acumatica
Modification d'éléments dans une liste déroulante
Recherche…
Introduction
Dans cette rubrique, vous allez apprendre à modifier les attributs de champ hérités des attributs PXStringList ou PXIntList. L'approche démontrée s'assurera de ne pas casser les fonctionnalités du produit de base Acumatica ERP et nécessitera une maintenance minimale, le cas échéant, tout en mettant à niveau vos personnalisations vers une nouvelle version d'Acumatica.
Remarques
Dans tous les exemples ci-dessus, vous avez apporté des modifications aux tableaux _AllowedValues
et _AllowedLabels
. Si votre tâche consiste à modifier uniquement l'étiquette (valeur externe) d'un élément déroulant, envisagez d'utiliser des dictionnaires de traduction. Pour plus d'informations sur les dictionnaires de traduction, voir la documentation Acumatica ERP.
Modification des états matrimoniaux
Dans cet exemple, vous allez modifier la liste déroulante État matrimonial du formulaire Contacts (CR302000):
Pour ajouter de nouveaux éléments au successeur de PXStringListAttribute
La meilleure façon d'étendre les éléments déroulants codés en dur dans un attribut hérité de l'attribut PXStringList ou PXIntList est d'augmenter la taille des tableaux _AllowedValues
et _AllowedLabels
du constructeur de votre attribut de champ personnalisé:
[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;
}
}
Dans l'exemple ci-dessus, vous avez augmenté la taille des tableaux _AllowedValues
et _AllowedLabels
pour ajouter 3 éléments supplémentaires à la liste déroulante État matrimonial . Les valeurs internes, stockées dans le tableau _AllowedValues
, seront affectées aux champs DAC et enregistrées dans la base de données, et les valeurs externes du tableau _AllowedValues
représentent les valeurs internes de l'interface utilisateur.
Pour tester les résultats, dans l'extension Contact DAC, décorez le champ MaritalStatus avec l' MaritalStatusesCst1Attribute
:
public class ContactExt : PXCacheExtension<Contact>
{
[PXRemoveBaseAttribute(typeof(MaritalStatusesAttribute))]
[PXMergeAttributes(Method = MergeMethod.Append)]
[MaritalStatusesCst1]
public string MaritalStatus { get; set; }
}
Maintenant, il y a 7 éléments dans la liste déroulante État matrimonial :
Pour supprimer des éléments déclarés dans le successeur de PXStringListAttribute
Pour supprimer un élément déroulant spécifique, codé en dur dans un attribut hérité de l'attribut PXStringList ou PXIntList, vous devez réduire la taille des tableaux _AllowedValues
et _AllowedLabels
dans le constructeur de votre attribut de champ personnalisé:
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;
}
}
Dans l'exemple ci-dessus, vous avez réduit la taille des tableaux _AllowedValues
et _AllowedLabels
pour supprimer l'élément unique de la liste déroulante État matrimonial .
Pour tester les résultats, dans l'extension Contact DAC, décorez le champ MaritalStatus avec le MaritalStatusesCst2Attribute
:
public class ContactExt : PXCacheExtension<Contact>
{
[PXRemoveBaseAttribute(typeof(MaritalStatusesAttribute))]
[PXMergeAttributes(Method = MergeMethod.Append)]
[MaritalStatusesCst2]
public string MaritalStatus { get; set; }
}
Maintenant, il n'y a que 6 éléments: 3 originaux et 3 personnalisés - dans la liste déroulante État matrimonial :
Pour remplacer des éléments déclarés dans le successeur de PXStringListAttribute
Pour remplacer un élément déroulant spécifique, initialement codé en dur dans un attribut hérité de l'attribut PXStringList ou PXIntList, vous devez mettre à jour la valeur appropriée dans les tableaux _AllowedValues
et _AllowedLabels
du constructeur de votre attribut de champ personnalisé:
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;
}
}
Dans l'exemple ci-dessus, vous avez remplacé l'élément D - Divorcé par V - Divorcé (ne vivant pas en common law) dans les tableaux _AllowedValues
et _AllowedLabels
respectivement. Ce faisant, nous remplaçons les valeurs internes et externes d’un élément déroulant.
Pour tester les résultats, dans l'extension Contact DAC, décorez le champ MaritalStatus avec l' MaritalStatusesCst3Attribute
:
public class ContactExt : PXCacheExtension<Contact>
{
[PXRemoveBaseAttribute(typeof(MaritalStatusesAttribute))]
[PXMergeAttributes(Method = MergeMethod.Append)]
[MaritalStatusesCst3]
public string MaritalStatus { get; set; }
}
Maintenant, il n'y a que 6 éléments: 2 originaux, 3 personnalisés et 1 remplacé - dans la liste déroulante État matrimonial :