ตัวอย่าง DataGrid: รายการใบสั่งซื้อ (Purchase Order)
คำอธิบายตัวอย่าง
ตัวอย่างตารางข้อมูลที่สร้างด้วย DataGrid (vanilla JS ไม่มี dependency) แสดงรายการใบสั่งซื้อพร้อมความสามารถหลัก ได้แก่ การเรียงลำดับคอลัมน์ ป้ายสถานะ (badge) คอลัมน์วันที่และ boolean ปุ่มดำเนินการต่อแถว (ดู/ยกเลิก) การแบ่งหน้า และการเลื่อนแนวนอน
- คลิกหัวคอลัมน์เพื่อเรียงลำดับ
- ดับเบิลคลิกแถว หรือกด Enter ที่แถวที่โฟกัส เพื่อดูรายละเอียด
- ปุ่มตา (View) ดูรายละเอียด และปุ่ม Cancel ยกเลิกเอกสารที่ยกเลิกได้
- ด้านล่างสุดคือ Source Code ของตัวอย่างนี้ พร้อมปุ่มคัดลอก
การใช้งานในโค้ด
import { DataGrid, thaiLabels } from '/src/index.js';
const grid = new DataGrid(document.getElementById('grid'), {
rowKey: 'id', // คีย์ที่ไม่ซ้ำของแต่ละแถว
rows, // array ของ object
columns: [
{ key: 'poNumber', label: 'เลขที่ใบสั่งซื้อ', sortable: true },
{ key: 'submittedDate', label: 'วันที่', type: 'date' },
{ key: 'status', label: 'สถานะ', type: 'badge', badges: { เสร็จสิ้น: { tone: 'success' } } },
{ key: '_actions', actions: [{ name: 'view', label: 'View', icon: 'visibility' }] },
],
searchable: true,
pageSize: 10,
defaultSort: { key: 'submittedDate', direction: 'desc' },
onAction: ({ action, row }) => console.log(action, row),
labels: thaiLabels,
});
grid.setRows(newRows); // เปลี่ยนข้อมูล
grid.destroy(); // ล้าง event listener เมื่อเลิกใช้
-
rowKeyระบุ field ที่ไม่ซ้ำ ใช้จำแถวตอนเรียงลำดับ จัดกลุ่ม และเปิดรายละเอียด -
typeของคอลัมน์ (date,badge,boolean) จัดรูปแบบค่าให้เอง เก็บข้อมูลเป็นDateหรือ boolean ตามจริงได้ -
คอลัมน์ที่มี
actionsสร้างปุ่มต่อแถว และแจ้งผลผ่านonAction -
ตัวเลือก
*StorageKeyจำค่าที่ผู้ใช้ปรับ (หน้า ลำดับ ความกว้าง คอลัมน์) ไว้ใน localStorage - ข้อมูลของผู้ใช้ถูก escape ก่อนแสดงเสมอ ไม่ต้องกรอง HTML เอง
Source Code
examples/po-list.js