Miklix

เพิ่มวิธีการแสดงหรือแก้ไขผ่านส่วนขยายใน Dynamics 365

ที่ตีพิมพ์: 16 กุมภาพันธ์ 2025 เวลา 11 นาฬิกา 56 นาที 21 วินาที UTC
ปรับปรุงล่าสุด : 12 มกราคม 2026 เวลา 8 นาฬิกา 57 นาที 36 วินาที 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 เพื่อให้ระบบทราบว่าคุณกำลังขยายคลาสใด ดังนี้:

[ExtensionOf(tableStr(CustTable))]
public final class MyCustTable_Extension
{
}

ตอนนี้คุณสามารถนำวิธีการแสดงผลของคุณมาใช้ในคลาสนี้ได้เลย เหมือนกับที่คุณเคยทำโดยตรงบนตารางใน Dynamics เวอร์ชันก่อนหน้า - "this" ยังอ้างอิงถึงตารางด้วย ดังนั้นคุณจึงสามารถเข้าถึงฟิลด์และเมธอดอื่นๆ ได้

ตัวอย่างเช่น คลาสที่มีเมธอดแสดงผลแบบง่ายๆ (และไม่มีประโยชน์เลย) ที่ส่งคืนหมายเลขบัญชีของลูกค้า อาจมีลักษณะดังนี้:

[ExtensionOf(tableStr(CustTable))]
public final class MyCustTable_Extension
{
    public display CustAccount displayAccountNum()
    {
        ;

        return this.AccountNum;
    }
}

ทีนี้ หากต้องการเพิ่มวิธีการแสดงผลลงในฟอร์ม (หรือส่วนขยายฟอร์ม หากคุณไม่สามารถแก้ไขฟอร์มได้โดยตรง) คุณต้องเพิ่มฟิลด์ลงในฟอร์มด้วยตนเอง และตรวจสอบให้แน่ใจว่าได้ใช้ประเภทที่ถูกต้อง (สตริงในตัวอย่างนี้คือประเภทข้อมูลที่ถูกต้อง)

จากนั้น ในส่วนของการควบคุม ให้ตั้งค่า DataSource เป็น CustTable (หรือชื่อใดก็ตามของแหล่งข้อมูล CustTable ของคุณ) และ DataMethod เป็น MyCustTable_Extension.displayAccountNum (อย่าลืมใส่ชื่อคลาสด้วย มิเช่นนั้นคอมไพเลอร์จะไม่พบเมธอด)

เสร็จเรียบร้อยแล้ว :-)

อัปเดต: ปัจจุบันไม่จำเป็นต้องระบุชื่อคลาสส่วนขยายเมื่อเพิ่มเมธอดแสดงผลลงในฟอร์มแล้ว แต่ในตอนที่เผยแพร่ครั้งแรกนั้นจำเป็นต้องระบุ ฉันจึงคงข้อมูลนี้ไว้เผื่อผู้อ่านบางท่านยังคงใช้เวอร์ชันเก่าอยู่

อ่านเพิ่มเติม

หากคุณชอบโพสต์นี้ คุณอาจชอบคำแนะนำเหล่านี้ด้วย:


แชร์บนบลูสกายแชร์บนเฟสบุ๊คแชร์บน LinkedInแชร์บน Tumblrแชร์บน Xแชร์บน LinkedInปักหมุดบน Pinterest

มิคเคล คริสเตนเซ่น

เกี่ยวกับผู้เขียน

มิคเคล คริสเตนเซ่น
ไมเคิล คือผู้สร้างและเจ้าของเว็บไซต์ miklix.com เขามีประสบการณ์เป็นโปรแกรมเมอร์/นักพัฒนาซอฟต์แวร์คอมพิวเตอร์มืออาชีพมากว่า 20 ปี และปัจจุบันทำงานเต็มเวลาให้กับบริษัทไอทีขนาดใหญ่แห่งหนึ่งในยุโรป เมื่อไม่ได้เขียนบล็อก เขาจะใช้เวลาว่างไปกับความสนใจ งานอดิเรก และกิจกรรมต่างๆ มากมาย ซึ่งในระดับหนึ่งอาจสะท้อนให้เห็นได้จากหัวข้อต่างๆ มากมายที่กล่าวถึงในเว็บไซต์นี้