본문으로 건너뛰기

เนื้อหาภาษาไทย / 태국어 콘텐츠

시스템 가이드 검수 완료된 콘텐츠

การสร้าง Interactive Tables ด้วย Tailwind CSS

บทความนี้สอนวิธีการสร้าง Interactive Tables โดยใช้ Tailwind CSS ร่วมกับ DataTables JavaScript Library เพื่อเพิ่มฟังก์ชันการเรียงลำดับและการค้นหาให้กับตาราง บทคว...

การสร้าง Interactive Tables ด้วย Tailwind CSS

ในบทความนี้ เราจะมาเรียนรู้วิธีการสร้างตารางที่สามารถโต้ตอบกับผู้ใช้ได้ (Interactive Tables) โดยใช้ Tailwind CSS ร่วมกับ JavaScript Libraries ที่ช่วยให้เราสามารถเพิ่มฟังก์ชันการเรียงลำดับ (Sorting) และการค้นหา (Searching) ได้อย่างง่ายดาย ตารางแบบ Interactive นี้จะช่วยให้ผู้ใช้สามารถจัดการและวิเคราะห์ข้อมูลได้อย่างมีประสิทธิภาพมากขึ้น

บทความนี้จะเน้นการนำไปใช้จริงทีละขั้นตอน พร้อมทั้งยกกรณีใช้งานจริงและข้อผิดพลาดที่พบบ่อย เพื่อให้คุณสามารถนำไปประยุกต์ใช้กับโปรเจกต์ของคุณได้อย่างรวดเร็ว

1. เลือก JavaScript Library สำหรับ Interactive Tables

มี JavaScript Libraries มากมายที่ช่วยให้เราสร้าง Interactive Tables ได้ง่ายขึ้น ตัวอย่างเช่น:

  • DataTables: เป็น library ที่ได้รับความนิยมอย่างมาก มี features ครบครัน เช่น sorting, searching, pagination, และ export
  • Tabulator: เป็น library ที่มีความยืดหยุ่นสูง สามารถปรับแต่งได้หลากหลาย
  • SortableJS: เป็น library ที่เน้นการเรียงลำดับ (Sorting) สามารถใช้ร่วมกับ libraries อื่นๆ ได้

ในบทความนี้ เราจะเลือกใช้ DataTables เนื่องจากเป็น library ที่ได้รับความนิยมและมี documentation ที่ดี

2. ติดตั้ง DataTables และ Tailwind CSS

2.1. ติดตั้ง DataTables

คุณสามารถติดตั้ง DataTables ผ่าน npm หรือ yarn ได้ดังนี้:

npm install datatables.net jquery

หรือ

yarn add datatables.net jquery

นอกจากนี้ คุณยังต้องติดตั้ง DataTables Bootstrap 5 Integration เพื่อให้เข้ากับ Tailwind CSS ได้ดีขึ้น:

npm install datatables.net-bs5

หรือ

yarn add datatables.net-bs5

2.2. ติดตั้ง jQuery

DataTables ต้องการ jQuery ดังนั้นหากยังไม่ได้ติดตั้ง ให้ติดตั้งด้วย:

npm install jquery

หรือ

yarn add jquery

2.3. ติดตั้ง Tailwind CSS

หากคุณยังไม่ได้ติดตั้ง Tailwind CSS คุณสามารถทำตามขั้นตอนใน documentation ของ Tailwind CSS ได้เลย

3. สร้างโครงสร้าง HTML สำหรับ Table

สร้างไฟล์ HTML (เช่น `index.html`) และเพิ่มโครงสร้างพื้นฐานสำหรับตาราง:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Interactive Table with Tailwind CSS</title>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css">
  <link rel="stylesheet" href="https://cdn.datatables.net/1.13.6/css/dataTables.bootstrap5.min.css">
</head>
<body class="bg-gray-100">
  <div class="container mx-auto p-4">
    <h1 class="text-2xl font-bold mb-4">Interactive Table with DataTables and Tailwind CSS</h1>
    <table id="myTable" class="table table-striped table-bordered w-full">
      <thead>
        <tr>
          <th>Name</th>
          <th>Position</th>
          <th>Office</th>
          <th>Age</th>
          <th>Start date</th>
          <th>Salary</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Tiger Nixon</td>
          <td>System Architect</td>
          <td>Edinburgh</td>
          <td>61</td>
          <td>2011/04/25</td>
          <td>$320,800</td>
        </tr>
        <tr>
          <td>Garrett Winters</td>
          <td>Accountant</td>
          <td>Tokyo</td>
          <td>63</td>
          <td>2011/07/25</td>
          <td>$170,750</td>
        </tr>
        <tr>
          <td>Ashton Cox</td>
          <td>Junior Technical Author</td>
          <td>San Francisco</td>
          <td>66</td>
          <td>2009/01/12</td>
          <td>$86,000</td>
        </tr>
        <!-- เพิ่มข้อมูลเพิ่มเติมตามต้องการ -->
      </tbody>
    </table>
  </div>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
  <script src="https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js"></script>
  <script src="https://cdn.datatables.net/1.13.6/js/dataTables.bootstrap5.min.js"></script>
  <script>
    $(document).ready( function () {
      $('#myTable').DataTable();
    } );
  </script>
</body>
</html>

อธิบาย Code:

  • เรา link Tailwind CSS จาก CDN
  • เรา link DataTables CSS และ JavaScript จาก CDN
  • เราสร้าง table element ด้วย id "myTable"
  • เราใช้ jQuery และ DataTables JavaScript เพื่อ initialize DataTables บน table ของเรา
  • `table table-striped table-bordered w-full`: เป็น classes ของ Bootstrap 5 ที่ใช้ Styling ตารางให้สวยงาม

4. Initializing DataTables

เพิ่ม JavaScript code เพื่อ initialize DataTables เมื่อ document พร้อมใช้งาน:

$(document).ready( function () {
  $('#myTable').DataTable();
} );

Code นี้จะทำการ:

  • รอให้ document โหลดเสร็จ
  • เลือก table element ด้วย id "myTable"
  • เรียกใช้ `DataTable()` function เพื่อ initialize DataTables บน table

5. ปรับแต่ง DataTables ด้วย Options

DataTables มี options มากมายให้เราปรับแต่งการทำงานของตารางได้ ตัวอย่างเช่น:

$(document).ready( function () {
  $('#myTable').DataTable({
    pagingType: 'full_numbers', // เปลี่ยน pagination style
    language: {
      search: 'ค้นหา:', // เปลี่ยน label ของ search box
      lengthMenu: 'แสดง _MENU_ รายการ', // เปลี่ยน label ของ length menu
      info: 'แสดง _START_ ถึง _END_ จาก _TOTAL_ รายการ', // เปลี่ยน label ของ info
      paginate: {
        first: 'หน้าแรก',
        last: 'หน้าสุดท้าย',
        next: 'ถัดไป',
        previous: 'ก่อนหน้า'
      }
    }
  });
} );

อธิบาย Options:

  • `pagingType: 'full_numbers'` เปลี่ยน pagination style ให้แสดงเลขหน้าทั้งหมด
  • `language` ใช้สำหรับปรับแต่งข้อความที่แสดงใน DataTables

6. การจัดการ Data

DataTables สามารถทำงานกับข้อมูลได้หลายรูปแบบ เช่น:

  • ข้อมูลจาก HTML: ข้อมูลที่อยู่ใน `<tbody>` ของ table
  • ข้อมูลจาก JavaScript Array: ข้อมูลที่อยู่ใน array ของ JavaScript
  • ข้อมูลจาก AJAX Source: ข้อมูลที่ดึงมาจาก API

6.1. ข้อมูลจาก JavaScript Array

แก้ไข JavaScript code เพื่อใช้ข้อมูลจาก JavaScript Array:

$(document).ready( function () {
  $('#myTable').DataTable({
    data: [
      ['Tiger Nixon', 'System Architect', 'Edinburgh', '61', '2011/04/25', '$320,800'],
      ['Garrett Winters', 'Accountant', 'Tokyo', '63', '2011/07/25', '$170,750'],
      ['Ashton Cox', 'Junior Technical Author', 'San Francisco', '66', '2009/01/12', '$86,000'],
      // เพิ่มข้อมูลเพิ่มเติมตามต้องการ
    ],
    columns: [
      { title: 'Name' },
      { title: 'Position' },
      { title: 'Office' },
      { title: 'Age' },
      { title: 'Start date' },
      { title: 'Salary' }
    ]
  });
} );

6.2. ข้อมูลจาก AJAX Source

แก้ไข JavaScript code เพื่อดึงข้อมูลจาก API:

$(document).ready( function () {
  $('#myTable').DataTable({
    ajax: {
      url: 'api/data', // URL ของ API
      dataSrc: '' // property ที่เก็บข้อมูลใน JSON response (ถ้าไม่มีให้ปล่อยว่างไว้)
    },
    columns: [
      { data: 'name', title: 'Name' },
      { data: 'position', title: 'Position' },
      { data: 'office', title: 'Office' },
      { data: 'age', title: 'Age' },
      { data: 'start_date', title: 'Start date' },
      { data: 'salary', title: 'Salary' }
    ]
  });
} );

ข้อควรระวัง: ตรวจสอบให้แน่ใจว่า API ของคุณ return ข้อมูลในรูปแบบ JSON ที่ถูกต้อง

7. ข้อผิดพลาดที่พบบ่อย

  • DataTables ไม่ทำงาน: ตรวจสอบว่าคุณได้ include jQuery และ DataTables JavaScript files อย่างถูกต้อง
  • รูปแบบ CSS ไม่ถูกต้อง: ตรวจสอบว่าคุณได้ include DataTables Bootstrap 5 CSS file อย่างถูกต้อง
  • ข้อมูลไม่แสดง: ตรวจสอบว่า `dataSrc` property ใน `ajax` option ถูกต้อง
  • Column headers ไม่ถูกต้อง: ตรวจสอบว่า `columns` option ถูกต้อง

8. สรุป

ในบทความนี้ เราได้เรียนรู้วิธีการสร้าง Interactive Tables โดยใช้ Tailwind CSS และ DataTables Library เราได้เรียนรู้วิธีการติดตั้ง DataTables, สร้างโครงสร้าง HTML, initialize DataTables, ปรับแต่ง options, และจัดการข้อมูลจากแหล่งต่างๆ หวังว่าบทความนี้จะเป็นประโยชน์และช่วยให้คุณสร้าง Interactive Tables ที่สวยงามและใช้งานง่ายได้สำเร็จ

Office.in.th Custom Service

이 구조를 바탕으로 시스템을 개발하거나 맞춤 변경하고 싶으신가요?

Office.in.th는 엔터프라이즈 웹 애플리케이션, API 연동, 공공/민간 업무 관리 시스템을 설계·개발하며 장기 지원을 제공합니다.

소프트웨어 개발 서비스 보기