Kumaha Ngulangkeun Unsur-unsur Enum tina Kode X ++ dina Dinamika AX 2012
Diterbitkeun: 15 Pébruari 2025 jam 23.16.06 UTC
Panungtungan diropéa: 12 Januari 2026 jam 8.42.27 UTC
Artikel ieu ngajelaskeun kumaha carana ngadaptar sareng ngulang unsur-unsur enum dasar dina Dynamics AX 2012, kalebet conto kode X++.
How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012
Inpormasi dina tulisan ieu dumasar kana Dynamics AX 2012 R3. Éta tiasa valid atanapi henteu pikeun vérsi anu sanés.
Kuring nembe nyieun formulir anu kedah nampilkeun nilai pikeun unggal unsur dina enum. Tinimbang nyieun kolom sacara manual (terus kedah ngajaga formulir upami enum kantos dirobih), kuring mutuskeun pikeun nerapkeunana sacara dinamis supados sacara otomatis nambihan kolom kana desain nalika waktos dijalankeun.
Nanging, kuring teu lila mendakan yén ngulang-ngulang nilai dina enum, sanaos gampang sakali anjeun terang kumaha carana, rada ngabingungkeun.
Anjeun tangtosna kedah ngamimitian ku kelas DictEnum. Sakumaha anu anjeun bakal tingali, kelas ieu ngagaduhan sababaraha metode pikeun kéngingkeun inpormasi sapertos nami sareng labél tina indéks sareng nilai.
Bédana antara indéks sareng nilai nyaéta indéks nyaéta nomer hiji élémen dina enum, upami élémen enum dinomeran sacara runtut dimimitian ti nol, sedengkeun nilai nyaéta sipat "nilai" élémen anu saleresna. Kusabab kalolobaan enum gaduh nilai anu dinomeran sacara runtut ti 0, indéks sareng nilai hiji élémen sering sami, tapi pastina henteu salawasna.
Tapi kumaha anjeun terang nilai mana anu dipiboga ku hiji enum? Di dieu pisan matak bingung. Kelas DictEnum gaduh metode anu disebut values(). Anjeun panginten ngarepkeun metode ieu bakal mulangkeun daptar nilai enum, tapi éta tangtosna bakal gampang teuing, janten gantina mulangkeun jumlah nilai anu dikandung ku enum. Nanging, jumlah nilai teu aya hubunganana sareng nilai anu saleresna, janten anjeun kedah nganggo nomer ieu salaku dasar pikeun nyauran metode anu berbasis indéks, sanés anu berbasis nilai.
Saupama waé maranéhna méré ngaran métode ieu indexes() , tangtu bakal leuwih gampang ngabingungkeun ;-)
Ogé émut yén nilai enum (sareng sigana "indéks" ieu) dimimitian ti 0, teu sapertos indéks array sareng wadah dina X++, anu dimimitian ti 1, janten pikeun ngulang unsur-unsur dina enum anjeun tiasa ngalakukeun hal sapertos kieu:
Counter c;
;
for (c = 0; c < dictEnum.values(); c++)
{
info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}
Ieu bakal ngaluarkeun simbol sareng labél unggal unsur dina enum ka infolog.
Bacaan salajengna
Upami anjeun resep kana tulisan ieu, anjeun ogé tiasa resep saran ieu:
- Nganggo kerangka SysExtension pikeun Milarian Subkelas mana anu bakal didamel dina Dynamics AX 2012
- Ngarobih Real kana String sareng Sadaya Desimal dina Dynamics AX 2012
- Hapus Badan Hukum (Akun Perusahaan) dina Dynamics AX 2012
