acumatica
Elemente in einer Dropdown-Liste ändern
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:
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 :
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 :
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 :