Translate

Hiển thị các bài đăng có nhãn chọn nhiều đơn hàng. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn chọn nhiều đơn hàng. Hiển thị tất cả bài đăng

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

08. Chọn nhiều hàng vào đơn hàng

 

Bài 08: Chọn nhiều hàng vào đơn hàng

Nội dung:

  1. Tạo OrderItemViewController
  2. Tạo PopupWindowShowAction để chọn Products_ListView
  3. Thêm hàng hóa đã chọn vào đơn hàng
  4. Hiển thị Products_ListView dưới dạng chọn CheckBox
  5. Chạy thử với phiên bản web, blazor

1. Tạo ViewController cho OrderItem


using App.Module.Modules.Inventory.Entities;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Actions;
using System;
using System.Linq;
using YouSoft.Vn.XAFCustom.Supports.Extensions;

namespace App.Module.Modules.Sales
{
    public class OrderItemViewController : ViewController<ListView>
    {
        PopupWindowShowAction selectProductsAction;
        public OrderItemViewController()
        {
            TargetObjectType = typeof(OrderItem);
            TargetViewNesting = Nesting.Nested;
            selectProductsAction = new PopupWindowShowAction()
            {
                Id = nameof(selectProductsAction),
                Caption = "Chọn hàng",
                TargetObjectType = typeof(OrderItem),
                TargetViewNesting = Nesting.Nested,
                SelectionDependencyType=SelectionDependencyType.Independent
            };

            Actions.Add(selectProductsAction);
            selectProductsAction.CustomizePopupWindowParams += SelectProductsAction_CustomizePopupWindowParams;
            selectProductsAction.Execute += SelectProductsAction_Execute;
        }

        private void SelectProductsAction_Execute(object sender, PopupWindowShowActionExecuteEventArgs e)
        {
            if (View.GetRawMasterObject() is SalesOrder order)
            {
                var products = e.PopupWindowViewSelectedObjects
                    .Cast<Product>()
                    .ToList();
                foreach(var product in products)
                {
                    order.Add(product);
                }
            }
        }

        private void SelectProductsAction_CustomizePopupWindowParams(object sender, CustomizePopupWindowParamsEventArgs e)
        {
            e.SetListView<Product>("", false, false);
        }
    }
}

2. Thêm hàm Add product vào lớp SalesOrder

public void Add(Product product, double quantity = 1) { var item =OrderItems.FirstOrDefault(i => i.Product == product); if (item == null) { item = new OrderItem(Session) { Product = Session.CloneObject(product) }; OrderItems.Add(item); } item.Quantity += quantity; }
Kiểm tra kết quả

3. Trong windows, hiển thị list view với checkbox cho user chọn

3.1 Clone Product_ListView 

Sửa các thuộc tính như trong hình

3.2 Đăng ký trong App.Module.cs


  protected override void Register(ICheckboxListViewService service)
        {
            base.Register(service);
            service.Register("Product_ListView_Popup");
        }

3.3 Thay chuỗi rỗng ở trên thành View Id

 private void SelectProductsAction_CustomizePopupWindowParams(object sender, CustomizePopupWindowParamsEventArgs e)
        {
            e.SetListView<Product>("Product_ListView_Popup", false, false);
        }

4. Kiểm tra kết quả



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