Miklix

Thêm phương thức hiển thị hoặc chỉnh sửa thông qua tiện ích mở rộng trong Dynamics 365

Đã xuất bản: lúc 11:56:22 UTC 16 tháng 2, 2025

Trong bài viết này, tôi sẽ giải thích cách sử dụng phần mở rộng lớp để thêm phương thức hiển thị vào bảng và biểu mẫu trong Dynamics 365 for Operations, bao gồm cả ví dụ mã X++.


Trang này được dịch máy từ tiếng Anh để có thể tiếp cận được với nhiều người nhất có thể. Thật không may, dịch máy vẫn chưa phải là công nghệ hoàn thiện, do đó có thể xảy ra lỗi. Nếu bạn thích, bạn có thể xem phiên bản tiếng Anh gốc tại đây:

Add Display or Edit Method via Extension in Dynamics 365

Mặc dù việc lập kế hoạch sử dụng phương pháp hiển thị hoặc chỉnh sửa trong Dynamics thường khiến bạn cân nhắc liệu mình có thể thiết kế giải pháp theo cách khác hay không, nhưng đôi khi đó lại là cách tốt nhất.

Trong các phiên bản trước của Dynamics và Axapta, việc tạo phương thức hiển thị hoặc chỉnh sửa trên bảng và biểu mẫu rất dễ dàng, nhưng gần đây khi tôi tình cờ phải tạo phương thức chỉnh sửa đầu tiên trong Dynamics 365, tôi phát hiện ra rằng quy trình thực hiện có phần khác biệt.

Rõ ràng là có một số cách tiếp cận hợp lệ, nhưng cách mà tôi thấy tốt nhất (cả về mặt trực quan và tính đẹp của mã) là sử dụng phần mở rộng lớp. Đúng vậy, bạn có thể sử dụng phần mở rộng lớp để thêm phương thức vào các loại phần tử khác ngoài lớp - trong trường hợp này là bảng, nhưng nó cũng hiệu quả với các biểu mẫu.

Đầu tiên, tạo một lớp mới. Bạn có thể đặt tên bất kỳ, nhưng vì lý do nào đó, nó phải được thêm hậu tố "_Extension". Giả sử bạn cần thêm phương thức hiển thị vào CustTable, bạn có thể đặt tên là MyCustTable_Extension.

Lớp phải được trang trí bằng ExtensionOf để hệ thống biết bạn đang mở rộng cái gì, như thế này:

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

Bây giờ bạn có thể triển khai phương thức hiển thị của mình trong lớp này, giống như bạn đã làm trực tiếp trên bảng trong các phiên bản Dynamics trước đó - "this" thậm chí còn tham chiếu đến bảng, do đó bạn có thể truy cập các trường và các phương thức khác.

Ví dụ, một lớp có phương thức hiển thị đơn giản (và hoàn toàn vô dụng) chỉ trả về số tài khoản của khách hàng có thể trông như thế này:

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

        return this.AccountNum;
    }
}

Bây giờ, để thêm phương thức hiển thị vào biểu mẫu (hoặc phần mở rộng biểu mẫu, nếu bạn không thể chỉnh sửa trực tiếp biểu mẫu), bạn cần thêm trường vào biểu mẫu theo cách thủ công và đảm bảo sử dụng đúng loại (trong ví dụ này là chuỗi).

Sau đó, trên bộ điều khiển, bạn sẽ đặt DataSource thành CustTable (hoặc bất kỳ tên nào của nguồn dữ liệu CustTable của bạn) và DataMethod thành MyCustTable_Extension.displayAccountNum (đảm bảo bao gồm tên lớp, nếu không trình biên dịch không thể tìm thấy phương thức).

Và bạn đã hoàn thành :-)

Cập nhật: Không còn cần thiết phải bao gồm tên lớp mở rộng khi thêm phương thức hiển thị vào biểu mẫu, nhưng tại thời điểm xuất bản ban đầu, thì cần phải bao gồm. Tôi để lại thông tin ở đây trong trường hợp một số độc giả vẫn đang sử dụng các phiên bản cũ hơn.

Chia sẻ trên BlueskyChia sẻ trên FacebookChia sẻ trên LinkedInChia sẻ trên TumblrChia sẻ trên XChia sẻ trên LinkedInGhim trên Pinterest

Mikkel Bang Christensen

Về tác giả

Mikkel Bang Christensen
Mikkel là người sáng lập và chủ sở hữu của miklix.com. Ông có hơn 20 năm kinh nghiệm làm lập trình viên máy tính/nhà phát triển phần mềm chuyên nghiệp và hiện đang làm việc toàn thời gian cho một tập đoàn CNTT lớn của Châu Âu. Khi không viết blog, ông dành thời gian rảnh rỗi cho nhiều sở thích, thú vui và hoạt động, có thể được phản ánh ở một mức độ nào đó trong nhiều chủ đề được đề cập trên trang web này.