Hãy tưởng tượng người dùng đang lọc danh sách sản phẩm đến trang số 10, click vào xem chi tiết, sau đó nhấn Back quay lại mà bảng lại reset về trang 1 và mất sạch bộ lọc. Cảm giác đó thật sự "tệ". State Saving sinh ra để giải quyết vấn đề này bằng cách ghi nhớ trạng thái bảng vào trình duyệt. 1. Cách kích hoạt cơ bản Chỉ cần thêm thuộc tính stateSave: true vào cấu hình khởi tạo. Mặc định, DataTables sẽ sử dụng localStorage để lưu trữ vĩnh viễn cho đến khi xóa cache. $('#ajaxDataTable').DataTable({ stateSave: true, stateDuration: 60 * 60 * 2 // Lưu trong 2 giờ (tính bằng giây) }); 2. Xử lý logic cho Individual Column Filter (Popup Dropdown) Một vấn đề phát sinh: DataTable nhớ giá trị lọc, nhưng các thẻ UI tự chế (như icon filter tam giác) sẽ bị mất màu báo hiệu. Chúng ta cần dùng hàm state.loaded() để "nhắc" giao diện hiển thị đúng. initComplete: function () { var api = th...
Trong các bài trước, chúng ta đã làm quen với ô Search tổng quát. Tuy nhiên, khi dữ liệu trở nên phức tạp, người dùng thường có nhu cầu lọc chính xác theo từng trường thông tin (ví dụ: chỉ xem sản phẩm "Hết hàng" hoặc thuộc loại "Điện tử"). Hôm nay, mình sẽ hướng dẫn các bạn cách tạo bộ lọc dạng Popup Dropdown ngay trên Header của DataTable Chúng ta sẽ sử dụng Icon tam giác và Popup Menu của Bootstrap graph LR subgraph "Thẻ TH (Table Header Cell)" Title[Text: Category] --- Icon[Icon: bi-caret-down-fill] end Icon -.-> Menu[Dropdown Menu - Absolute Position] subgraph "Dropdown Menu Items" Option1[Tất cả] Option2[Giá trị 1] Option3[Giá trị 2] end Menu --- Option1 Menu --- Option2 Menu --- Option3 Cài đặt giao diện CSS Tham khảo: https://getbootstrap.com/docs/4.0/components/dropdowns/ Cấu Trúc HTML Dropdown <div class="dropdown d-inline-block filter-container ms-2"> <!...