การเขียนโค้ดเพื่อ ซ่อน (Hide) และ แสดง (Show) Field บน Page

Spread the love

สวัสดีครับ สำหรับบทความนี้จะเป็นบทความเกี่ยวกับ Technical ล้วน ๆ ครับ เป็นเทคนิคเล็ก ๆ น้อย ๆ ในการแสดง (show) หรือ ซ่อน (Hide) บางฟิลด์ซึ่งอาจจะไม่จำเป็นสำหรับบาง User

dynamically-show-and-hide-field-on-page-in-business-central-1

ซึ่งช่วยให้โปรแกรมไม่เกิดความซับซ้อน (Complexibility) จนมากกว่าเกินไป อย่างที่รู้กันว่าโปรแกรม Dynamics 365 Business Central นั่นเป็นโปรแกรม ERP ประเภทหนึ่ง ดังนั้นไม่แปลกที่จะมี Menu แล้ว Setup มากมาย ยิ่งสามารถ Implement Feature เข้าไปให้กับตัวโปรแกรมได้แล้ว ยิ่งเพิ่มความซับซ้อนเข้าไปใหญ่

Business Value

การเขียนโปรแกรมเพื่ออำนวยความสะดวกให้กับผู้ใช้งาน เพื่อไม่ให้มีข้อมูลต่าง ๆ ในหน้าจอจนมากเกินไปก็อาจจะเป็นการพัฒนา User Friendly Interface ให้กับผู้ใช้งานได้

dynamically-show-and-hide-field-on-page-in-business-central-2

จากรูปด้านบนนี้จะเห็นว่า ผมได้เพิ่มฟิลด์เข้ามาในหน้าจอ Sales & Receivables Setup

แน่นอนว่าผมได้สร้าง AL Extension เล็ก ๆ ขึ้นมาหนึ่งตัว และทำการ extend ให้กับ Sales & Receivables Setup ทั้ง Table และ Page

เอาละมาดูวิธีการทำกันดีกว่า

บทความที่คุณอาจสนใจ

ขั้นตอนการติดตั้ง AL Language บน Visual Studio Code สำหรับ Microsoft Dynamics 365 Business Central
เริ่มต้นสร้าง Extension แรกบน MS Dynamics 365 BC ตอนที่ 1 – New Table

Programming

อันดับแรกเราก็จะ extend เทเบิ้ล Sales & Receivables Setup แล้วเพิ่มฟิลด์ตามรูปด้านล่าง

dynamically-show-and-hide-field-on-page-in-business-central-3

เมื่อได้ฟิลด์ครบแล้วต่อไปก็จะเป็นการนำฟิลด์ไปแสดงบน Sales & Receivables Setup page โดยใช้ Page Extension

ในอันดับแรกเราก็จะสร้าง Page Extension ที่มีโครงเป็นฟิลด์ที่เราเพิ่มเข้ามาก่อน

dynamically-show-and-hide-field-on-page-in-business-central-4

ขั้นต่อไปเราจะเขียนโค้ดเพื่อควบคุมการแสดง และ ซ่อน ของฟิลด์ Item 1, Item 2, Item 3 โดยเราจะสร้างตัวแปรที่มีชื่อว่า isVisible ขึ้นมาหนึ่งตัว และเอาไปใส่ใน Visible Property ของ group ที่ชื่อว่า “Hide Group”

หมายเหตุ: อย่าลืมใส่ InDataSet ตอนที่สร้างตัวแปร เพราะถ้าหากไม่ใส่ละก็ การทำงานของฟังก์ชั่นนี้ในหน้าจอมันก็จะเกิดอาการเพี้ยน ๆ

dynamically-show-and-hide-field-on-page-in-business-central-5

ขั้นต่อไปก็เป็นการเขียนโค้ดเพื่อให้เกิดการทำงานเมื่อเกิด trigger ต่าง ๆ ถูกทำงาน

dynamically-show-and-hide-field-on-page-in-business-central-6

โดยเมื่อมีการเปิดหน้าจอขึ้นมาจะเซ็ตให้ isVisible เป็น true และเมื่อมีการคลิกที่ “Click to Hide” ค่า isVisible จะเป็น false

บทความที่คุณอาจสนใจ

วิธีใช้งาน และวัตถุประสงค์ของหน้าจอใน Sales / Purchase Order Processing
คู่มือใช้งาน Dynamics 365 Business Central – Sales Module: ตอนที่ 1 สร้าง Customer

เสร็จแล้วก็ Install และ Publish โดยการกดปุ่ม Ctrl + F5 ก็เป็นอันเรียบร้อยครับ

Testing

dynamically-show-and-hide-field-on-page-in-business-central-7
dynamically-show-and-hide-field-on-page-in-business-central-8

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

Source Code

Tab-Ext50111.ExtSalesAndReceivableSetup.al


tableextension 50111 "Ext. Sales & Receivables Setup" extends "Sales & Receivables Setup"
{
    fields
    {
        field(50000; "Click To Hide"; Boolean)
        {
            DataClassification = ToBeClassified;
        }
        field(50001; "Item 1"; Text[30])
        {
            DataClassification = ToBeClassified;
        }
        field(50002; "Item 2"; Text[30])
        {
            DataClassification = ToBeClassified;
        }
        field(50003; "Item 3"; Text[30])
        {
            DataClassification = ToBeClassified;
        }
    }
}

Pag-Ext50111.ExtSalesAndReceivableSetup.al

pageextension 50111 "Ext. Sales & Receivable Setup" extends "Sales & Receivables Setup"
{
    layout
    {
        addlast(General)
        {
            field("Click To Hide"; "Click To Hide")
            {
                ApplicationArea = All;

                trigger OnValidate()
                begin
                    if "Click To Hide" then
                        isVisible := false
                    else
                        isVisible := true;
                end;
            }
            group("Hide Group")
            {
                ShowCaption = false;
                Visible = isVisible;

                field("Item 1"; "Item 1")
                {
                    ApplicationArea = All;
                }
                field("Item 2"; "Item 2")
                {
                    ApplicationArea = All;
                }
                field("Item 3"; "Item 3")
                {
                    ApplicationArea = All;
                }
            }
        }
    }
    
    trigger OnOpenPage()
    begin
        isVisible := true;
    end;

    var
        [InDataSet]
        isVisible: Boolean;
}

ERP Consultant ที่อยากแชร์ความรู้เกี่ยวกับการพัฒนาโปรแกรม Microsoft Dynamics NAV / 365 Business Central ทั้งทางด้าน Business และ Technical ให้กับเหล่านักศึกษา, ผู้ที่เริ่มต้นอาชีพนี้ หรือต้องการที่จะเพิ่มเติมความรู้ด้าน ERP ในรูปแบบ blog ที่เป็นภาษาไทย Contact: amaddev90@gmail.com

Leave a Reply

Your email address will not be published. Required fields are marked *