Miklix

Kaip kartoti Enum elementus iš X++ kodo „Dynamics AX 2012“

Paskelbta: 2025 m. vasario 15 d. 23:10:43 UTC

Šiame straipsnyje paaiškinama, kaip išvardinti ir perjungti pagrindinio sąrašo elementus sistemoje Dynamics AX 2012, įskaitant X++ kodo pavyzdį.


Šis puslapis buvo mašininiu būdu išverstas iš anglų kalbos, kad juo galėtų naudotis kuo daugiau žmonių. Deja, mašininis vertimas dar nėra tobula technologija, todėl gali pasitaikyti klaidų. Jei pageidaujate, originalią versiją anglų kalba galite peržiūrėti čia:

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

Šiame įraše pateikta informacija pagrįsta Dynamics AX 2012 R3. Jis gali galioti arba negalioja kitoms versijoms.

Neseniai kūriau formą, kurioje reikėjo parodyti kiekvieno sąrašo elemento vertę. Užuot kūręs laukus rankiniu būdu (ir tada, kai reikia prižiūrėti formą, jei sąrašas kada nors keičiamas), nusprendžiau jį įdiegti dinamiškai, kad jis automatiškai pridėtų laukus į dizainą vykdymo metu.

Tačiau netrukus supratau, kad iš tikrųjų kartoti reikšmes sąraše, nors ir pakankamai lengva, kai žinai, kaip tai padaryti, yra šiek tiek painu.

Akivaizdu, kad jums reikia pradėti nuo DictEnum klasės. Kaip matysite, ši klasė turi kelis metodus, kaip gauti informaciją, pvz., pavadinimą ir etiketę iš indekso ir reikšmės.

Skirtumas tarp indekso ir reikšmės yra tas, kad indeksas yra elemento numeris sąraše, jei sąrašo elementai buvo sunumeruoti nuosekliai pradedant nuo nulio, o vertė yra elemento tikroji „vertės“ savybė. Kadangi daugumos sąrašų reikšmės sunumeruotos nuosekliai nuo 0, elemento indeksas ir reikšmė dažnai bus vienodi, bet tikrai ne visada .

Bet kaip žinoti, kokias vertes turi enum? Štai čia pasidaro painu. DictEnum klasėje yra metodas, vadinamas Values ​​(). Galite tikėtis, kad šis metodas pateiks enum reikšmių sąrašą, bet akivaizdu, kad tai būtų per lengva, todėl vietoj to jis grąžins reikšmių, esančių sąraše, skaičių . Tačiau reikšmių skaičius neturi nieko bendra su tikrosiomis reikšmėmis, todėl jūs turite naudoti šį skaičių kaip pagrindą iškviesti indeksu pagrįstus metodus, o ne verte pagrįstus metodus.

Jei tik jie būtų pavadinę šį metodą indeksais (), būtų buvę mažiau paini ;-)

Taip pat atminkite, kad sąrašo reikšmės (ir, matyt, šie "indeksai") prasideda nuo 0, skirtingai nuo masyvo ir konteinerio indeksų X++, kurie prasideda nuo 1, todėl norėdami pereiti prie sąrašo elementų, galite padaryti kažką panašaus:

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

Taip į informacinį žurnalą bus pateiktas kiekvieno sąrašo elemento simbolis ir etiketė.

Pasidalinkite „Bluesky“.Dalintis FacebookBendrinkite „LinkedIn“.Bendrinkite „Tumblr“.Dalintis XBendrinkite „LinkedIn“.Prisegti prie Pinterest

Mikkel Bang Christensen

Apie autorių

Mikkel Bang Christensen
Mikkelis yra miklix.com kūrėjas ir savininkas. Jis turi daugiau nei 20 metų profesionalaus kompiuterių programuotojo ir programinės įrangos kūrėjo patirtį ir šiuo metu visą darbo dieną dirba didelėje Europos IT korporacijoje. Kai jis nerašo tinklaraščio, laisvalaikį skiria įvairiems interesams, pomėgiams ir užsiėmimams, kurie tam tikra prasme gali atsispindėti šioje svetainėje nagrinėjamų temų įvairovėje.