เพิ่มวิธีการแสดงหรือแก้ไขผ่านส่วนขยายใน Dynamics 365
ที่ตีพิมพ์: 16 กุมภาพันธ์ 2025 เวลา 11 นาฬิกา 56 นาที 21 วินาที UTC
ในบทความนี้ ฉันจะอธิบายวิธีการใช้ส่วนขยายคลาสเพื่อเพิ่มวิธีการแสดงลงในตารางและฟอร์มใน Dynamics 365 for Operations ตัวอย่างโค้ด X++ รวมอยู่ด้วย
Add Display or Edit Method via Extension in Dynamics 365
แม้ว่าการวางแผนที่จะใช้วิธีการแสดงหรือแก้ไขใน Dynamics เป็นสิ่งที่โดยทั่วไปควรทําให้คุณพิจารณาว่าคุณอาจออกแบบโซลูชันของคุณด้วยวิธีอื่นได้หรือไม่ แต่บางครั้งก็เป็นวิธีที่ดีที่สุด
ใน Dynamics และ Axapta รุ่นก่อนหน้า มันง่ายมากที่จะสร้างวิธีการแสดงหรือแก้ไขบนตารางและฟอร์ม แต่เมื่อฉันเพิ่งต้องสร้างวิธีการแก้ไขครั้งแรกใน Dynamics 365 ฉันพบว่าขั้นตอนในการทําเช่นนั้นค่อนข้างแตกต่างออกไป
เห็นได้ชัดว่ามีวิธีการที่ถูกต้องหลายวิธี แต่วิธีที่ฉันพบว่าดีที่สุด (ทั้งในแง่ของสัญชาตญาณและความสวยงามของโค้ด) คือการใช้ส่วนขยายคลาส ใช่ คุณสามารถใช้ส่วนขยายคลาสเพื่อเพิ่มวิธีการให้กับประเภทองค์ประกอบอื่นที่ไม่ใช่คลาส - ในกรณีนี้คือตาราง แต่ใช้ได้กับฟอร์มเช่นกัน
ขั้นแรก ให้สร้างคลาสใหม่ คุณสามารถตั้งชื่ออะไรก็ได้ที่คุณต้องการ แต่ด้วยเหตุผล บางประการ ต้องมีคํา ต่อท้าย "_Extension" สมมติว่าคุณต้องเพิ่มวิธีการแสดงให้กับ CustTable คุณสามารถตั้งชื่อ MyCustTable_Extension ได้
คลาสต้องได้รับการตกแต่งด้วย ExtensionOf เพื่อให้ระบบรู้ว่าคุณกําลังขยายอะไร ดังนี้:
public final class MyCustTable_Extension
{
}
ตอนนี้คุณสามารถใช้วิธีการแสดงของคุณในคลาสนี้ได้เช่นเดียวกับที่คุณทําโดยตรงบนตารางใน Dynamics เวอร์ชันก่อนหน้า - "สิ่งนี้" ยังอ้างอิงตารางดังนั้นคุณจึงสามารถเข้าถึงฟิลด์และวิธีการอื่น ๆ
ตัวอย่างเช่น คลาสที่มีวิธีการแสดงที่เรียบง่าย (และไร้ประโยชน์โดยสิ้นเชิง) ที่ส่งคืนหมายเลขบัญชีของลูกค้าอาจมีลักษณะดังนี้:
public final class MyCustTable_Extension
{
public display CustAccount displayAccountNum()
{
;
return this.AccountNum;
}
}
ตอนนี้ หากต้องการเพิ่มวิธีการแสดงลงในฟอร์ม (หรือส่วนขยายฟอร์ม หากคุณไม่สามารถแก้ไขฟอร์มได้โดยตรง) คุณต้องเพิ่มฟิลด์ลงในฟอร์มด้วยตนเอง และตรวจสอบให้แน่ใจว่าได้ใช้ชนิดที่ถูกต้อง (สตริงในตัวอย่างนี้)
จากนั้น บนตัวควบคุม คุณจะตั้งค่า DataSource เป็น CustTable (หรือชื่อของแหล่งข้อมูล CustTable ของคุณ) และ DataMethod เป็น MyCustTable_Extension.displayAccountNum (ตรวจสอบให้แน่ใจว่าได้รวมชื่อคลาส มิฉะนั้น คอมไพเลอร์จะไม่พบวิธีการ)
และคุณก็เสร็จแล้ว :-)
อัปเดต: ไม่จําเป็นต้องรวมชื่อคลาสส่วนขยายอีกต่อไปเมื่อเพิ่มวิธีการแสดงลงในแบบฟอร์ม แต่ในเวลาเดิมของการเผยแพร่ ฉันทิ้งข้อมูลไว้ที่นี่ในกรณีที่ผู้อ่านบางคนยังคงใช้เวอร์ชันเก่า