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

TRAINING

Hướng dẫn chức năng Sắp xếp trong ASP.NET Core

Được viết bởi webmaster ngày 08/09/2023 lúc 07:57 PM
Hướng dẫn chức năng Sắp xếp trong ASP.NET Core
  • 0
  • 1087

Hướng dẫn chức năng Sắp xếp trong ASP.NET Core

1. View
- Tại vị trí muốn chèn link để người dùng nhấn sort
 <th>
                            @{
                                var sortBy = Context.Request.Query["sortby"] == "name" ? "namedesc" : "name";
                            }
                            <a href="@Url.Action("Index","Customer",new {sortBy=sortBy,SearchString=@Context.Request.Query["SearchString"]})">
                            @Html.DisplayNameFor(model => model.TenKhachHang)
                            </a>
                        </th>
- Ý nghĩa:
+ var sortBy: gán giá trị truy vấn từ URL với khoá là sortby, kiểm tra sortby có bằng "name" không, nếu bằng thì chuyển "namedesc"
+ Cái link, thể hiện gán biến sortBy dành QueryString.
- Mục đích: Giảm dần, tăng dần
- Tương tự có thể làm cho các trường dữ liệu khác
- Thay thế phân trang, dòng dưới cùng, chèn thêm thuộc tính sort
@Html.PagedListPager((IPagedList) Model, page => Url.Action("Index", new {page = page,
SearchString = @Context.Request.Query["SearchString"],sortby = @Context.Request.Query["sortby"]}),
new X.PagedList.Web.Common.PagedListRenderOptions {
    LiElementClasses = new string[] {"page-item"},
    PageClasses = new string[] { "page-link" }
})

2. Controller
- Sửa lại Action Index hiện tại:
        [HttpGet]
        public ActionResult Index(string searchString, int? page, string sortBy)
        {
            var khachHangList = khachHangRepository.GetKhachHangs(sortBy).ToPagedList(page ?? 1, 5);
            if (!string.IsNullOrEmpty(searchString))
            {
                searchString = searchString.ToLower();
                khachHangList = khachHangRepository.GetKhachHangByName(searchString, sortBy).ToPagedList(page ?? 1, 5);
            }
            //TempData["searchString"] = searchString;
            return View(khachHangList);
        }
3. Repository
- IKhachHangRepository
        IEnumerable<KhachHang> GetKhachHangs(string sortBy);
        IEnumerable<KhachHang> GetKhachHangByName(string name,string sortBy);
- KhachHangRepository
        public IEnumerable<KhachHang> GetKhachHangs(string sortBy) => KhachHangDao.Instance.GetKhachHangList(sortBy);
        public IEnumerable<KhachHang> GetKhachHangByName(string name, string sortBy) => KhachHangDao.Instance.GetKhachHangBySearchName(name, sortBy);
4. Dao
- Sửa lại các hàm sau
        public IEnumerable<KhachHang> GetKhachHangList(string sortBy)
        {
            using var context = new MyStockContext();
            List<KhachHang> model = context.KhachHangs.ToList();
            try
            {
                switch (sortBy)
                {
                    case "name":
                        model = model.OrderBy(o => o.TenKhachHang).ToList();
                        break;
                    case "namedesc":
                        model = model.OrderByDescending(o => o.TenKhachHang).ToList();
                        break;
                    default:
                        break;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return model;
        }
        public IEnumerable<KhachHang> GetKhachHangBySearchName(string name, string sortBy)
        {
            var context = new MyStockContext();
            /*var khachHangs = new List<KhachHang>();*/
            List<KhachHang> model = context.KhachHangs.ToList();

            try
            {
                if (!String.IsNullOrEmpty(name))
                {
                    model = model.Where(x => x.TenKhachHang.ToLower().Contains(name)).ToList();
                    switch (sortBy)
                    {
                        case "name":
                            model = model.OrderBy(o => o.TenKhachHang).ToList();
                            break;
                        case "namedesc":
                            model = model.OrderByDescending(o => o.TenKhachHang).ToList();
                            break;
                        default:
                            break;
                    }
                }
                else
                {
                    return model;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return model;
        }


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