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): entrer la description de l'image ici

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 :

entrer la description de l'image ici

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 :

entrer la description de l'image ici

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 :

entrer la description de l'image ici



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow