acumatica
Ändra objekt i en rullgardinslista
Sök…
Introduktion
I det här ämnet kommer du att lära dig att ändra fältattribut som ärvts från PXStringList- eller PXIntList-attributen. Det demonstrerade tillvägagångssättet kommer att se till att inte bryta funktionaliteten för basen Acumatica ERP-produkten och kräver minimalt underhåll, om något, medan du uppgraderar dina anpassningar till en nyare version av Acumatica.
Anmärkningar
I alla prover ovan har du gjort ändringar i både _AllowedValues
och _AllowedLabels
matriserna. Om din uppgift är att endast ändra etikett (externt värde) på en listrutan, överväg att använda översättningsordböcker. För mer information om översättningsordlistor se Acumatica ERP-dokumentation
Ändra äktenskapliga statyer
I det här exemplet kommer du att ändra civilstånd rullgardinsmenyn finns på Kontakter bildar (CR302000):
Lägga till nya objekt i PXStringListAttribute efterträdaren
Det bästa sättet att utöka rullgardinsföremål som är hårdkodade inuti ett attribut som ärvts från PXStringList- eller PXIntList-attributet är genom att öka storleken på _AllowedValues
och _AllowedLabels
i konstruktorn för ditt anpassade fältattribut:
[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;
}
}
I exemplet ovan ökade du storleken på _AllowedValues
och _AllowedLabels
att lägga till ytterligare _AllowedLabels
objekt i rullgardinslistan för äktenskaplig status . Interna värden, lagrade i _AllowedValues
, kommer att tilldelas DAC-fält och sparas i databasen, och externa värden från _AllowedValues
representerar interna värden i UI.
För att testa resultaten, i tillägget Contact DAC, dekorera MaritalStatus- fältet med MaritalStatusesCst1Attribute
:
public class ContactExt : PXCacheExtension<Contact>
{
[PXRemoveBaseAttribute(typeof(MaritalStatusesAttribute))]
[PXMergeAttributes(Method = MergeMethod.Append)]
[MaritalStatusesCst1]
public string MaritalStatus { get; set; }
}
Nu finns det 7 objekt i listrutan för äktenskaplig status :
Ta bort objekt som deklareras i PXStringListAttribute efterträdare
För att ta bort specifika rullgardinsföremål, som hårdkodades inuti ett attribut som ärvts från PXStringList- eller PXIntList-attributet, måste du minska storleken på _AllowedValues
och _AllowedLabels
i konstruktorn för ditt anpassade fältattribut:
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;
}
}
I exemplet ovan minskade du storleken på _AllowedValues
och _AllowedLabels
att ta bort enstaka objekt från listrutan för äktenskaplig status .
För att testa resultaten, i tillägget Contact DAC, dekorera MaritalStatus- fältet med MaritalStatusesCst2Attribute
:
public class ContactExt : PXCacheExtension<Contact>
{
[PXRemoveBaseAttribute(typeof(MaritalStatusesAttribute))]
[PXMergeAttributes(Method = MergeMethod.Append)]
[MaritalStatusesCst2]
public string MaritalStatus { get; set; }
}
Nu finns det bara 6 artiklar: 3 original och 3 anpassade - i rullgardinslistan för äktenskaplig status :
För att ersätta artiklar som deklarerats i PXStringListAttribute efterträdare
För att ersätta specifikt listrutan, ursprungligen hårkodad inuti ett attribut som ärvts från PXStringList- eller PXIntList-attributet, måste du uppdatera lämpligt värde i _AllowedValues
och _AllowedLabels
i konstruktorn för ditt anpassade fältattribut:
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;
}
}
I exemplet ovan ersatte du D - Divorced artikel med V - Divorced (inte levande gemensam lag) i _AllowedValues
respektive _AllowedLabels
matriserna. Genom att göra det ersätter vi både interna och externa värden för en rullgardinsmeny.
För att testa resultaten, i tillägget Contact DAC, dekorera MaritalStatus- fältet med MaritalStatusesCst3Attribute
:
public class ContactExt : PXCacheExtension<Contact>
{
[PXRemoveBaseAttribute(typeof(MaritalStatusesAttribute))]
[PXMergeAttributes(Method = MergeMethod.Append)]
[MaritalStatusesCst3]
public string MaritalStatus { get; set; }
}
Nu finns det bara 6 artiklar: 2 original, 3 anpassade och 1 ersatt - i rullgardinslistan för äktenskaplig status :