Cấp bậc tác giả:

DOTNET

Hiển thị danh sách với sự kết hợp giữa Enum, Model, Repeater trong ASP.NET

Được viết bởi webmaster ngày 09/07/2021 lúc 02:40 PM
Trong quá trình xây dựng project, có trường dữ liệu cố định phân quyền mà chúng ta không cần thiết phải sử dụng trong database, trường dữ liệu bao gồm kiểu chữ và số. Do đó, giải pháp để hiển thị danh sách dữ liệu cố định là sử dụng Enum, sau đó chuyển đổi Enum sang kiểu List. Kết hợp với Linq để thể hiện tìm kiếm đẩy dữ liệu ra theo các tiêu chí lựa chọn.
  • 0
  • 3346

Hiển thị danh sách với sự kết hợp giữa Enum, Model, Repeater trong ASP.NET

Trong quá trình xây dựng project, có trường dữ liệu cố định phân quyền mà chúng ta không cần thiết phải sử dụng trong database, trường dữ liệu bao gồm kiểu chữ và số. Do đó, giải pháp để hiển thị danh sách dữ liệu cố định là sử dụng Enum, sau đó chuyển đổi Enum sang kiểu List. Kết hợp với Linq để thể hiện tìm kiếm đẩy dữ liệu ra theo các tiêu chí lựa chọn.

Quyen-Han.jpg

Đầu tiên, bạn tạo một class như sau
    public class ModelQuyenHan
    {
        public string TenQuyenHan { get; set; }
        public int MaQuyenHan { get; set; }
        public string MaThanhVien { get; set; }
    }

Sau đó, chèn thêm một Enum để thể hiện giá trị tương ứng
    public enum QuyenHan
    {
        LopTruong = 1,
        SinhVien = 2,
        BanChapHanh = 3,
        BanThuongVu = 4,
        QuanLyWebsite = 5,
        BiThu = 6,
        QuanLyKTX = 7,
        GiangVien = 8,
        CuuSinhVien = 9
    }

Mình thể hiện nội dung, thuộc tính bằng tiếng việt để mọi người dễ dàng hình dung. Bây giờ thì đổ dữ liệu ra thôi nhỉ!? Chú ý là Binding dữ liệu ở đâu thì chèn vào ở đó nhé

List<ModelQuyenHan> tlist_ChucVu = ((QuyenHan[])Enum.GetValues(typeof(QuyenHan))).Select(c => new ModelQuyenHan() { MaQuyenHan = (int)c, TenQuyenHan = c.ToString(), MaThanhVien = H_MaSinhVien.Value }).ToList();
rpQuyenHan.DataSource = tlist_ChucVu;
rpQuyenHan.DataBind();

Giải thích:
  • ModelQuyenHan: Là Class chứa các thuộc tính mà chúng ta đã khởi tạo ở trên
  • Enum.GetValues: Lấy giá trị tương ứng theo cột value
  • ToList: Chuyển đổi các value sang list để hiển thị trên Repeater

Tại trang ASPX, chúng ta chỉ cần dòng sau tương ứng model mà ta đã tạo ở trên
<%# Eval("TenQuyenHan")%>

Tuy nhiên, kết quả hiển thị sẽ là chữ liền, không dấu theo đúng giá trị thuộc tính mà ta đã khởi tạo. Vì vậy chúng ta cần tạo hàm trả về chuỗi tiếng việt có dấu tương ứng điều kiện cho trước
<%# getTenQuyenHan(Eval("TenQuyenHan"))%>

Tại server
        public string getTenQuyenHan(object ob)
        {
            if (ob.ToString() == QuyenHan.LopTruong.ToString())
            {
                return "Lớp trưởng";
            }
            if (ob.ToString() == QuyenHan.SinhVien.ToString())
            {
                return "Sinh viên";
            }
            if (ob.ToString() == QuyenHan.BanChapHanh.ToString())
            {
                return "Ban chấp hành";
            }
            if (ob.ToString() == QuyenHan.BanThuongVu.ToString())
            {
                return "Ban thường vụ";
            }
            if (ob.ToString() == QuyenHan.QuanLyWebsite.ToString())
            {
                return "Quản lý Website";
            }
            if (ob.ToString() == QuyenHan.BiThu.ToString())
            {
                return "Bí thư";
            }
            if (ob.ToString() == QuyenHan.QuanLyKTX.ToString())
            {
                return "Phòng Công tác sinh viên";
            }
            if (ob.ToString() == QuyenHan.GiangVien.ToString())
            {
                return "Giảng viên";
            }
            if (ob.ToString() == QuyenHan.CuuSinhVien.ToString())
            {
                return "Cựu Sinh viên";
            }
            return "";
        }

Câu lệnh này khá dài. Bạn có thể nghĩ cách để nó tối giản lại nhé :) Có thể sử dụng mảng đối tượng chẳng hạn...

Nguồn bài viết: DOTNET.VN

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML