Cara Ngulangi Elemen Enum saka Kode X++ ing Dynamics AX 2012
Diterbitake: 15 Februari 2025 ing 23:11:21 UTC
Artikel iki nerangake carane enumerate lan daur ulang liwat unsur enum dhasar ing Dynamics AX 2012, kalebu conto kode X++.
How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012
Informasi ing kirim iki adhedhasar Dynamics AX 2012 R3. Bisa uga ora bener kanggo versi liyane.
Aku bubar nggawe formulir sing perlu kanggo nampilake nilai kanggo saben unsur ing enum. Tinimbang nggawe lapangan kanthi manual (banjur kudu njaga formulir kasebut yen enum wis diowahi), aku mutusake kanggo ngetrapake kanthi dinamis supaya kanthi otomatis nambah lapangan menyang desain nalika mbukak.
Nanging, aku rauh katutup sing bener iterating liwat nilai ing enum, nalika cukup gampang yen ngerti carane, punika dicokot bingung.
Sampeyan temenan kudu miwiti karo kelas DictEnum. Kaya sing sampeyan ngerteni, kelas iki duwe sawetara cara kanggo entuk informasi kayata jeneng lan label saka indeks lan nilai.
Bentenipun antarane indeks lan nilai yaiku indeks minangka nomer unsur ing enum, yen unsur enum diwenehi nomer urut saka nol, dene nilai kasebut minangka properti "nilai" sing nyata. Minangka paling enums duwe angka urutan saka 0, indeks lan nilai saka unsur bakal asring padha, nanging mesthi ora tansah .
Nanging kepiye sampeyan ngerti nilai enum? Iki ngendi dadi bingung. Kelas DictEnum nduweni metode sing diarani nilai (). Sampeyan bisa uga nyana cara iki ngasilake dhaptar nilai enum, nanging mesthi gampang banget, mula bakal ngasilake jumlah nilai sing ana ing enum. Nanging, jumlah nilai ora ana hubungane karo nilai sing nyata, mula sampeyan kudu nggunakake nomer kasebut minangka basis kanggo nelpon metode basis indeks, dudu metode adhedhasar nilai.
Yen mung padha ngarani metode iki indeks () tinimbang, mesthine ora mbingungake ;-)
Uga elinga yen nilai enum (lan ketoke "indeks") iki diwiwiti ing 0, ora kaya indeks array lan wadah ing X++, sing diwiwiti ing 1, supaya bisa ngubengi unsur ing enum sampeyan bisa nindakake kaya iki:
Counter c;
;
for (c = 0; c < dictEnum.values(); c++)
{
info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}
Iki bakal ngasilake simbol lan label saben unsur ing enum menyang infolog.