acumatica
Modyfikowanie elementów na liście rozwijanej
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):
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:
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 :
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 :