Thời gian dùng thử đã hết!
Phần mềm đã vượt quá 15 ngày dùng thử miễn phí. Vui lòng nhập mã bản quyền (License Key) để tiếp tục sử dụng iTeach.
Bài 16. Bảng Dữ liệu (Phần 5): Tìm kiếm & Tương tác
1. Kiến thức bài học
Sau khi đã đổ được dữ liệu từ Apps Script ra Bảng HTML (Table), hai tính năng được mong chờ nhất trong các hệ thống quản lý trường học là:
- Thanh tìm kiếm (Client-side Search): Sử dụng sự kiện
onkeyupcủa JavaScript để bắt từng phím người dùng gõ vào ô tìm kiếm. Thuật toán sẽ duyệt qua các thẻ<tr>, so sánh chuỗi và ẩn (display: none) những hàng không khớp. - Nút Hành động (Action Buttons): Chèn một thẻ
<button>vào một cột (ví dụ cột Cuối cùng) khi vòng lặp tạo bảng. Gắn mã định danh (như Mã học sinh) vào thuộc tính của nút để gọigoogle.script.runxử lý tác vụ Xóa, Sửa.
2. Bài tập mẫu
Ví dụ 1: Tìm kiếm trực tiếp trên bảng
Đề bài: Tạo một ô nhập liệu (Input). Bất cứ khi nào giáo viên gõ tên học sinh, bảng danh sách nghiên cứu KHKT bên dưới sẽ tự động lọc ngay lập tức mà không cần tải lại trang.
Code HTML / JavaScript (Thêm vào trên thẻ table):
<input type="text" id="timKiem" onkeyup="locDuLieu()" placeholder="🔍 Nhập tên học sinh để tìm kiếm..."><script>functionlocDuLieu() {// Lấy giá trị đang gõ và chuyển thành chữ in hoa để so sánhletinput = document.getElementById("timKiem");letfilter = input.value.toUpperCase();// Lấy bảng và danh sách các thẻ <tr>lettable = document.getElementById("bangDanhSach");lettr = table.getElementsByTagName("tr");// Duyệt qua các hàng (Bỏ qua hàng 0 là tiêu đề)for(leti = 1; i < tr.length; i++) {lettd = tr[i].getElementsByTagName("td")[0];// Lấy cột Tên (Cột đầu tiên)if(td) {lettxtValue = td.textContent || td.innerText;// Nếu tên chứa từ khóa tìm kiếm -> Hiển thị, ngược lại -> Ẩn điif(txtValue.toUpperCase().indexOf(filter) > -1) { tr[i].style.display =""; }else{ tr[i].style.display ="none"; } } } }</script>
Ví dụ 2: Thêm nút "Xóa" gọi về Apps Script
Đề bài: Khi vòng lặp JS đắp dữ liệu vào bảng, hãy thêm một cột "Thao tác" chứa nút Xóa. Khi bấm nút, gửi Mã học sinh về Server để xóa dòng trong Google Sheets.
Khúc Code JS lúc tạo Bảng (Client):
dataArray.forEach(row => { html +=` <tr id="hang-; });${row[0]}"> <td>${row[0]}</td><!-- Mã HS --><td>${row[1]}</td><!-- Tên --><td><button onclick="xoaHocSinh('Xóa${row[0]}')"></button></td> </tr> `functionxoaHocSinh(maHS) {if(confirm("Bạn có chắc muốn xóa "+ maHS +" không?")) {google.script.run.xoaTrenSheet(maHS);// Gọi Apps Scriptdocument.getElementById("hang-"+ maHS).style.display ="none";// Ẩn trên giao diện tạm thời} }
Mô phỏng Giao diện: Tìm kiếm và Tương tác Bảng
Danh sách học sinh tham gia dự án KHKT (THPT Phan Chu Trinh):
| Mã HS | Họ và Tên | Dự án KHKT | Thao tác |
|---|---|---|---|
| HS01 | Kpă Su | Điểm danh QR | |
| HS02 | Nay Phoan | Điểm danh QR | |
| HS03 | Trần Văn Bình | Phần mềm thi trắc nghiệm |
3. Bài tập tự luyện
Bài tập: Xây dựng hệ thống quản lý mượn trả thiết bị
Đề bài: Là người quản lý thiết bị trường học, hãy tạo một Web App hiển thị danh sách thiết bị đang được mượn.
- Thêm thanh tìm kiếm (như Ví dụ 1) để tìm nhanh theo "Tên giáo viên mượn".
- Tạo một nút "Đã Trả" thay vì nút "Xóa" cho mỗi hàng.
- Khi click nút "Đã Trả", dùng
google.script.rungửi Mã thiết bị về Code.gs để hàm Code.gs cập nhật trạng thái trong Sheet thành "Hoàn thành", đồng thời cập nhật hàng đó trên giao diện sang màu xám.