Miklix

Hoe om die elemente van 'n opsomming van X ++ -kode in Dynamics AX 2012 te herhaal

Gepubliseer: 15 Februarie 2025 om 23:11:24 UTC

Hierdie artikel verduidelik hoe om die elemente van 'n basisopsomming in Dynamics AX 2012 op te noem en oor te loop, insluitend 'n X ++ -kodevoorbeeld.


Hierdie bladsy is masjienvertaal uit Engels om dit vir soveel mense moontlik toeganklik te maak. Ongelukkig is masjienvertaling nog nie 'n volmaakte tegnologie nie, dus kan foute voorkom. As jy verkies, kan jy die oorspronklike Engelse weergawe hier sien:

How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012

Die inligting in hierdie pos is gebaseer op Dynamics AX 2012 R3. Dit mag al dan nie geldig wees vir ander weergawes nie.

Ek het onlangs 'n vorm geskep wat 'n waarde vir elke element in 'n opsomming moes vertoon. In plaas daarvan om die velde handmatig te skep (en dan die vorm in stand te hou as die opsomming ooit gewysig word), het ek besluit om dit dinamies te implementeer sodat dit die velde outomaties by die ontwerp sou voeg.

Ek het egter gou ontdek dat dit 'n bietjie verwarrend is om die waardes in 'n opsomming te herhaal, hoewel dit maklik genoeg is as u eers weet hoe.

Jy moet natuurlik met die DictEnum-klas begin. Soos u sal sien, het hierdie klas verskeie metodes om inligting soos naam en etiket van beide indeks en waarde te bekom.

Die verskil tussen indeks en waarde is dat indeks 'n element se nommer in die opsomming is, as die opsomming se elemente opeenvolgend vanaf nul genommer is, terwyl waarde die element se werklike "waarde" -eienskap is. Aangesien die meeste enums waardes het wat opeenvolgend vanaf 0 genommer is, sal die indeks en waarde van 'n element dikwels dieselfde wees, maar beslis nie altyd nie.

Maar hoe weet jy watter waardes 'n opsomming het? Dit is waar dit verwarrend raak. Die DictEnum-klas het 'n metode genaamd waardes (). U kan verwag dat hierdie metode 'n lys van die waardes van die opsomming sal teruggee, maar dit sal natuurlik te maklik wees, dus gee dit eerder die aantal waardes terug wat die opsomming bevat. Die aantal waardes het egter niks met die werklike waardes te doen nie, dus moet u hierdie getal as basis gebruik om die indeksgebaseerde metodes te noem, nie die waardegebaseerde metodes nie.

As hulle maar net hierdie metode indekse () genoem het, sou dit minder verwarrend gewees het ;-)

Hou ook in gedagte dat opsommingwaardes (en blykbaar hierdie "indekse") by 0 begin, anders as skikkings- en houerindekse in X ++, wat by 1 begin, so om die elemente in 'n opsomming oor te loop, kan jy so iets doen:

DictEnum dictEnum = new DictEnum(enumNum(SalesStatus));
Counter  c;
;

for (c = 0; c < dictEnum.values(); c++)
{
    info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}

Dit sal die simbool en etiket van elke element in die opsomming na die infolog uitvoer.

Deel op BlueskyDeel op FacebookDeel op LinkedInDeel op TumblrDeel op XDeel op LinkedInSpeld op Pinterest

Mikkel Bang Christensen

Oor die skrywer

Mikkel Bang Christensen
Mikkel is die skepper en eienaar van miklix.com. Hy het meer as 20 jaar ondervinding as 'n professionele rekenaarprogrammeerder/sagteware-ontwikkelaar en is tans voltyds in diens van 'n groot Europese IT-korporasie. Wanneer hy nie blog nie, spandeer hy sy vrye tyd aan 'n groot verskeidenheid belangstellings, stokperdjies en aktiwiteite, wat tot 'n mate weerspieƫl kan word in die verskeidenheid onderwerpe wat op hierdie webwerf gedek word.