Cara Ngulangi Elemen Enum saka Kode X++ ing Dynamics AX 2012
Diterbitake: 15 Februari 2025 ing 23:11:21 UTC
Dianyari pungkasan: 12 Januari 2026 ing 08:42:21 UTC
Artikel iki njelasake carane ngetung lan ngulang elemen 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 kiriman iki adhedhasar Dynamics AX 2012 R3. Iki bisa uga valid utawa ora valid kanggo versi liyane.
Aku bubar nggawe formulir sing kudu nampilake nilai kanggo saben elemen ing enum. Tinimbang nggawe kolom kanthi manual (banjur kudu njaga formulir kasebut yen enum kasebut diowahi), aku mutusake kanggo ngetrapake kanthi dinamis supaya bisa kanthi otomatis nambahake kolom menyang desain nalika wektu mlaku.
Nanging, aku ora suwe nemokake yen ngulang nilai ing enum, sanajan cukup gampang yen sampeyan ngerti carane, rada mbingungake.
Sampeyan mesthi kudu miwiti karo kelas DictEnum. Kaya sing bakal sampeyan deleng, kelas iki duwe sawetara cara kanggo entuk informasi kayata jeneng lan label saka indeks lan nilai.
Bedane antarane indeks lan nilai yaiku indeks minangka nomer elemen ing enum, yen elemen enum kasebut diwenehi nomer kanthi runtut wiwit saka nol, dene nilai minangka properti "nilai" elemen kasebut. Amarga umume enum duwe nilai sing diwenehi nomer kanthi runtut wiwit saka 0, indeks lan nilai elemen asring padha, nanging mesthi ora mesthi.
Nanging kepiye carane ngerti nilai endi sing diduweni enum? Ing kene iki dadi bingung. Kelas DictEnum duwe metode sing diarani values(). Sampeyan bisa uga ngarepake metode iki bakal ngasilake dhaptar nilai enum, nanging mesthi bakal gampang banget, mula tinimbang ngasilake jumlah nilai sing ana ing enum. Nanging, jumlah nilai ora ana hubungane karo nilai sing nyata, mula sampeyan kudu nggunakake nomer iki minangka dhasar kanggo nelpon metode adhedhasar indeks, dudu sing adhedhasar nilai.
Saupama waé cara iki dijenengi indexes() waé, mesthiné bakal luwih gampang mbingungaké ;-)
Uga elinga yen nilai enum (lan ketoke "indeks" iki) diwiwiti saka 0, ora kaya indeks array lan kontainer ing X++, sing diwiwiti saka 1, mula kanggo ngulang elemen 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 elemen ing enum menyang infolog.
Wacan Salajengipun
Yen sampeyan seneng karo kiriman iki, sampeyan bisa uga seneng saran iki:
- Kesalahan "Ora ana kelas metadata sing ditetepake kanggo obyek kontrak data" ing Dynamics AX 2012
- Nelpon Layanan Dokumen AIF Langsung saka X++ ing Dynamics AX 2012
- Nggunakake Kueri ing Kelas Kontrak Data SysOperation ing Dynamics AX 2012
