Bài 2.b: Tạo một action đơn giản
Ở
bài trước, các bạn đã thêm lớp Product vào phần mềm. Bài này, tôi sẽ hướng dẫn các bạn tạo một nút lệnh đơn giản (SimpleAction), khi chọn một product bấm vào nó hiển thị tên của sản phẩm đó.
Đơn giản như đang giỡn, nhưng ai cũng vậy, trước khi chạy mình bò từ từ hén.
Tạo controller
Các nút lệnh tương tác trong phần mềm nền tảng XAF đều thông qua action. Lớp ViewController sẽ chứa các action đó.
Vì vậy các bạn trước hết tạo một lớp ViewController như sau:
Đơn giản tên lớp là ProductViewController, nên đặt tên đối tượng là lớp nào để dễ maintain sau này.
Lớp này bạn nên đặt vào thư mục Inventory của lần trước. Nếu kỹ nữa thì trong thư mục này nên có thư mục Enitties dành để chứa các lớp như Product và ViewControllers để chứa các viewcontroller. Nhưng thôi ở bước này làm gọn, để tập trung vào ViewController.
Tạo Action
XAF có hỗ trợ tạo designer, các bạn thêm action vào dễ dàng. Tuy nhiên, với các project dùng .netCore framework chưa hỗ trợ desgin. Các bạn có thể tìm hiểu cách này ở tài liệu XAF và làm thử ở solution .net_Guid.
Ở đây, tôi chỉ các bạn tạo action trong code. Tất cả làm trong code hết.
Các bạn tạo đoạn code thế này.
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Actions;
using System;
using System.Collections.Generic;
using System.Text;
using YouSoft.Vn.XAFCustom.Supports.Extensions;
namespace App.Module.Modules.Inventory
{
public class ProductViewController:ViewController
{
//Khai báo action
SimpleAction _showNameAction;
public ProductViewController()
{
//ViewController này chỉ dành cho lớp Product
TargetObjectType = typeof(Product);
_showNameAction = new SimpleAction()
{
//Id để nhận diện thôi
Id = nameof(_showNameAction),
//action này chỉ hoạt đột trên lớp Product
TargetObjectType=typeof(Product),
Caption = "Hiển thị tên",
Category = "View",
//action chỉ hoạt động khi có một sản phẩm được chọn
SelectionDependencyType=SelectionDependencyType.RequireSingleObject
};
_showNameAction.Execute += _showNameAction_Execute;
Actions.Add(_showNameAction);
}
private void _showNameAction_Execute(object sender, SimpleActionExecuteEventArgs e)
{
if(View.GetSingleObject<Product>() is Product product)
//Nếu đối tượng được chọn khác null, một cách viêt khác cho gọn
{
//hiển thị thông báo tới người dùng
this.AlertInfo($"Tên sản phẩm: {product.Name}");
}
}
}
}
Đăng ký ViewController
Như đề cập phần trước, để sử dụng controller này vào phần mềm, bạn cần đăng ký ở Lớp App_Module như sau:
//Đăng ký những controller sẽ được sử dụng trong phần mềm
protected override void Register(ModuleControllerService service)
{
base.Register(service);
service.Register<ProductViewController>();
}
Chạy phần mềm
Chỉ vậy thôi, chạy phần mềm ở 3 app, các bạn chọn vào product rồi bấm hiển thị tên, sẽ được kết quả sau:
Windows form