Szukaj…


Wprowadzenie

W tym temacie dowiesz się, jak modyfikować atrybuty pola odziedziczone z atrybutów PXStringList lub PXIntList. Zaprezentowane podejście zapewni, że nie zepsuje funkcjonalności podstawowego produktu Acumatica ERP i będzie wymagało minimalnej konserwacji, jeśli taka istnieje, podczas uaktualniania dostosowań do nowszej wersji Acumatica.

Uwagi

We wszystkich powyższych przykładach dokonano zmian zarówno w _AllowedValues i _AllowedLabels . Jeśli Twoim zadaniem jest modyfikacja tylko etykiety (wartości zewnętrznej) elementu rozwijanego, rozważ użycie słowników tłumaczeniowych. Więcej informacji na temat słowników tłumaczeń znajduje się w dokumentacji Acumatica ERP

Modyfikacja stanów cywilnych

W tym przykładzie będziesz modyfikować listę rozwijaną stanu cywilnego znajdującą się w formularzu Kontakty (CR302000): wprowadź opis zdjęcia tutaj

Aby dodać nowe elementy do następcy PXStringListAttribute

Najlepszym sposobem na rozszerzenie rozwijanych elementów zakodowanych na stałe w atrybucie odziedziczonym z atrybutu PXStringList lub PXIntList jest zwiększenie rozmiarów tablic _AllowedValues i _AllowedLabels w konstruktorze niestandardowego atrybutu pola:

[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;
    }
}

W powyższym przykładzie zwiększyłeś rozmiar tablic _AllowedValues i _AllowedLabels aby dodać 3 dodatkowe elementy do listy rozwijanej Stan cywilny . Wartości wewnętrzne, przechowywane w tablicy _AllowedValues , zostaną przypisane do pól DAC i zapisane w bazie danych, a wartości zewnętrzne z tablicy _AllowedValues reprezentują wartości wewnętrzne w interfejsie użytkownika.

Aby przetestować wyniki, w rozszerzeniu Contact DAC udekoruj pole MaritalStatus za pomocą MaritalStatusesCst1Attribute :

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

Teraz na liście rozwijanej stanu cywilnego znajduje się 7 pozycji:

wprowadź opis zdjęcia tutaj

Aby usunąć elementy zadeklarowane w następcy PXStringListAttribute

Aby usunąć określony element rozwijany, który został zakodowany na stałe w atrybucie odziedziczonym z atrybutu PXStringList lub PXIntList, musisz zmniejszyć rozmiar tablic _AllowedValues i _AllowedLabels w konstruktorze niestandardowego atrybutu pola:

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;
    }
}

W powyższym przykładzie zmniejszyłeś rozmiar tablic _AllowedValues i _AllowedLabels aby usunąć Pojedynczy element z listy rozwijanej Stan cywilny .

Aby przetestować wyniki, w rozszerzeniu Contact DAC udekoruj pole MaritalStatus za pomocą MaritalStatusesCst2Attribute :

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

Teraz jest tylko 6 pozycji: 3 oryginalne i 3 niestandardowe - z listy rozwijanej Stan cywilny :

wprowadź opis zdjęcia tutaj

Aby zastąpić elementy zadeklarowane w następcy PXStringListAttribute

Aby zastąpić określony element rozwijany, pierwotnie zakodowany na stałe w atrybucie odziedziczonym z atrybutu PXStringList lub PXIntList, musisz zaktualizować odpowiednią wartość w _AllowedValues i _AllowedLabels w konstruktorze niestandardowego atrybutu pola:

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;
    }
}

W powyższej próbce element D - rozwiedziony został zastąpiony przez element V - rozwiedziony (nie żyjący zgodnie z powszechnym prawem) odpowiednio w _AllowedValues i _AllowedLabels . W ten sposób zastępujemy zarówno wewnętrzne, jak i zewnętrzne wartości elementu rozwijanego.

Aby przetestować wyniki, w rozszerzeniu Contact DAC udekoruj pole MaritalStatus za pomocą MaritalStatusesCst3Attribute :

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

Teraz jest tylko 6 pozycji: 2 oryginalne, 3 niestandardowe i 1 wymieniony - z listy rozwijanej Stan cywilny :

wprowadź opis zdjęcia tutaj



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow