Chủ Nhật, 10 tháng 12, 2017

Tạo chức năng xóa hàng loạt record trong ASP.NET MVC

Một chức năng phổ biến ở các trang quản trị là xóa hàng loạt record. Bài viết này hướng dẫn bạn thực hành tạo chức năng đó.

Giả sử mình có trang hiển thị danh sách sản phẩm như sau.


Bây giờ mình thiết kế thêm 1 cột ở cuối table để hiển thị các nút checkbox cho phép người dùng lựa chọn các sản phẩm muốn xóa.



Chú ý rằng nút checkbox trên cùng sẽ là nút checkall nghĩa là khi quản trị viên check vào nút này thì mặc định tất cả các checkbox phía dưới sẽ được chọn. Nội dung thiết kế nút checkall như sau:



Mình đặt id cho nút này là checkall.

Dưới đây là nội dung thiết kế các nút checkbox bên dưới. Các nút checkbox này mình đặt name là dsxoa và có value là Id của sản phẩm đó.





Thêm đoạn script sau để khi check vào nút checkall thì tất cả checkbox dsxoa sẽ được chọn và ngược lại khi bỏ checkall thì tất cả checkbox dsxoa cũng bỏ chọn.



Tạo tag form gọi đến action Delete với method="post". Chúng ta sẽ tạo action này khi hoàn thành thiết kế View. Nội dung tag table sẽ được bọc vào trong form này (xem hình dưới).


Bổ sung tag <tr></tr> vào cuối các tag tr khác. Đây là dòng cuối cùng của table, dòng này chỉ hiển thị nút submit Xóa.



Khi click Xóa form sẽ được đệ trình lên server, nó sẽ gửi toàn bộ các giá trị Id của các checkbox  được chọn về action Delete. Do đó action Delete cần có 1 tham số là 1 mảng số nguyên (vì cột Id trong CSDL của mình là kiểu int) với tên biến là dsxoa (vì name của các nút checkbox mình đặt là dsxoa).

Cuối cùng bổ sung action Delete vào controller, nội dung action Delete sẽ như sau. 


Mình duyệt qua các  giá trị Id trong mảng dsxoa sau đó tìm sản phẩm theo Id và xóa sản phẩm đó khỏi CSDL. 

Chúc các bạn thực hành thành công.