Suche…


Einführung

In diesem Thema erfahren Sie, wie Sie Feldattribute ändern, die von den Attributen PXStringList oder PXIntList geerbt wurden. Der aufgezeigte Ansatz stellt sicher, dass die Funktionalität des Basisprodukts von Acumatica ERP nicht beeinträchtigt wird, und erfordert, wenn überhaupt, nur eine minimale Wartung, während Sie Ihre Anpassungen auf eine neuere Version von Acumatica aktualisieren.

Bemerkungen

In allen obigen Beispielen haben Sie Änderungen an den Arrays _AllowedValues und _AllowedLabels . Wenn Sie lediglich die Bezeichnung (externer Wert) eines Dropdown-Elements ändern möchten, sollten Sie Übersetzungswörterbücher verwenden. Weitere Informationen zu Übersetzungswörterbüchern finden Sie in der Acumatica ERP-Dokumentation

Familienstand ändern

In diesem Beispiel werden Sie die Familienstand Dropdown-Liste auf der Kontaktform (CR302000) zu finden ändern: Geben Sie hier die Bildbeschreibung ein

So fügen Sie dem PXStringListAttribute-Nachfolger neue Elemente hinzu

Dropdown-Elemente, die innerhalb eines Attributs, das von den Attributen PXStringList oder PXIntList geerbt wurde, hartcodiert werden, können Sie am besten erweitern, indem Sie die Größe der Arrays _AllowedValues und _AllowedLabels im Konstruktor Ihres benutzerdefinierten _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 dem obigen Beispiel haben Sie die Größe der Arrays _AllowedValues und _AllowedLabels erhöht, um der Dropdown-Liste Familienstatus 3 zusätzliche Elemente hinzuzufügen. Interne Werte, die im Array _AllowedValues gespeichert sind, werden DAC-Feldern zugewiesen und in der Datenbank gespeichert. Externe Werte aus dem Array _AllowedValues repräsentieren interne Werte in der Benutzeroberfläche.

Um die Ergebnisse zu testen, dekorieren Sie in der Erweiterung Contact DAC das Feld MaritalStatus mit dem MaritalStatusesCst1Attribute :

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

Nun gibt es 7 Elemente in der Dropdown-Liste Familienstand :

Geben Sie hier die Bildbeschreibung ein

So entfernen Sie Elemente, die im Nachfolger PXStringListAttribute deklariert sind

Um ein bestimmtes Dropdown-Element zu entfernen, das in einem vom PXStringList- oder PXIntList-Attribut geerbten Attribut hartcodiert wurde, müssen Sie die Größe der _AllowedValues und _AllowedLabels Arrays im Konstruktor des benutzerdefinierten _AllowedValues _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 der Probe über verringert Sie Größe des _AllowedValues und _AllowedLabels Arrays einzelnes Element aus dem Familienstand der Dropdown-Liste zu entfernen.

Um die Ergebnisse zu testen, dekorieren Sie in der Erweiterung Contact DAC das Feld MaritalStatus mit dem MaritalStatusesCst2Attribute :

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

Jetzt gibt es nur noch 6 Elemente: 3 Original und 3 Brauch - in der Dropdown-Liste Familienstand :

Geben Sie hier die Bildbeschreibung ein

Ersetzen von Elementen, die im Nachfolger PXStringListAttribute deklariert sind

Um ein bestimmtes Dropdown-Element zu ersetzen, das ursprünglich in einem vom PXStringList- oder PXIntList-Attribut geerbten Attribut hartcodiert ist, müssen Sie den entsprechenden Wert in den Arrays _AllowedValues und _AllowedLabels im Konstruktor Ihres benutzerdefinierten _AllowedValues _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 dem obigen Beispiel haben Sie D - Divorced Item durch V - Divorced (nicht geläufiges Common Law) in den Arrays _AllowedValues und _AllowedLabels ersetzt. Auf diese Weise ersetzen wir sowohl interne als auch externe Werte eines Dropdown-Objekts.

Um die Ergebnisse zu testen, dekorieren Sie in der Erweiterung Contact DAC das Feld MaritalStatus mit dem MaritalStatusesCst3Attribute :

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

Jetzt gibt es nur noch 6 Elemente: 2 Original, 3 Brauch und 1 ersetzt - in der Dropdown-Liste Familienstand :

Geben Sie hier die Bildbeschreibung ein



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow