Translate

Chủ Nhật, 28 tháng 3, 2021

Bài 7: Thêm trạng thái cho đơn hàng (Enum)

Bài 7: Thêm trạng thái cho đơn hàng (Enum)

Bài trước chúng, ta đã có đơn hàng Sales Order, lần này chúng ta sẽ thực hiện các tác vụ sau:
  1. Thêm trạng thái giao hàng cho đơn hàng (DeliveryStatus), sử dụng enum
  2. Tô màu tương ứng từng trạng thái sử dụng Conditional Appearance Module của XAF
    1. Chỉnh sửa trên model
    2. Viết trong code
  3. Dùng SingleChoiceAction để tạo action cho người dùng sửa trạng thái hàng loạt đơn hàng:
    1. Đọc tất cả giá trị của một kiểu enum
    2. Lấy LocalizedText của một giá trị trong enum
  4. Video tham khảo:
Chúng ta bắt đầu nhé.

1. Thêm trạng thái giao hàng cho đơn hàng

Các bạn tạo một enum như bên dưới

using DevExpress.ExpressApp.DC;
using System;
using System.Linq;

namespace App.Module.Modules.Sales
{
    public enum DeliveryStatus
    {
        //CodeRush - Gõ dn khoảng trắng để hiển thị thuộc tính XafDisplayName
[XafDisplayName("")] None = 0, [XafDisplayName("Đã xuất kho")] Exported = 1, [XafDisplayName("Đã giao")] Delivered = 2, [XafDisplayName("Hủy")] Cancelled = 3 } }

2. Thêm property DeliveryStatus


[XafDisplayName("Tình trạng giao hàng")] //[ToolTip("")] public DeliveryStatus DeliveryStatus { get => _deliveryStatus; set => SetPropertyValue(nameof(DeliveryStatus), ref _deliveryStatus, value); }

3. Thay đổi màu sắc theo trạng thái

a. Thay đổi trên model

Bạn nhớ, rebuild để XAF cập nhật lại file ModelDesign nhé. Mở file này, vào mục sau
Cách này dễ làm, nhưng mỗi lần phải định nghĩa màu, có thể gây ra khống nhất màu sắc.

b. Thay đổi trong code

Mở lớp SalesOrder lên, thêm vào thuộc tính màu sắc như bên dưới:


using YouSoft.Vn.XAFCustom.Supports.Attributes.ActionModification; using YouSoft.Vn.XAFCustom.Supports.Custom; namespace App.Module.Modules.Sales { //... [DecoratePropertiesControls("Cancelled",TargetItems =nameof(DeliveryStatus)
,Criteria = "DeliveryStatus='Cancelled'",PredefinedStyle =PredefinedStyle.DangerStyle)] public partial class SalesOrder //... {

4. Kiểm tra



5. Tạo SingleChoiceAction để set status

Thêm đoạn code sau vào file SalesOrderViewController.cs
//... public SalesOrderViewController() { //... setDeliveryStatusAction = new SingleChoiceAction() { Id = nameof(setDeliveryStatusAction), Caption = "Cập nhật", TargetObjectType = typeof(SalesOrder), ConfirmationMessage = "Bạn có muốn cập nhật hàng hoạt đơn hàng không?", ItemType = SingleChoiceActionItemType.ItemIsOperation, SelectionDependencyType=SelectionDependencyType.RequireMultipleObjects }; Actions.Add(setDeliveryStatusAction); InitActionItems(); setDeliveryStatusAction.Execute += SetDeliveryStatusAction_Execute; } void InitActionItems() {     var statuses = Enum.GetValues(typeof(DeliveryStatus)); foreach (var status in statuses) { var item = new ChoiceActionItem(((Enum)status).LocalizedEnumText()
, status); setDeliveryStatusAction.Items.Add(item); } }

6. Kết quả

Chúc các bạn thành công



Không có nhận xét nào:

Đăng nhận xét