Как использовать несколько порядков сортировки в контроллере - PullRequest
0 голосов
/ 23 марта 2019

У меня есть список нескольких сортировщиков в контроллере для 3 страниц, однако, когда я сортирую по таблице, а не по индексной странице. Я вернулся на главную страницу.

Я думал, что изменение названия сортировщика, чтобы оно изменилось, сработало.

 public async Task<ActionResult> DashBoard(string sortOrder, string currentFilter,string searchString, int? page)
        {
            ViewBag.CurrentSort = sortOrder;
            ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
            ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";

            if (searchString != null)
            {
                page = 1;
            }
            else
            {
                searchString = currentFilter;
            }

            ViewBag.CurrentFilter = searchString;

            var clinicalAssets = from s in db.ClinicalAssets.Include(c => c.ModelName) select s;

            if (!String.IsNullOrEmpty(searchString))
            {
                clinicalAssets = clinicalAssets.Where(s => s.SerialNo.Contains(searchString)
                                       || s.PoNo.Contains(searchString));
            }

            switch (sortOrder)
            {
                case "name_desc":
                    clinicalAssets = clinicalAssets.OrderByDescending(s => s.PoNo);
                    break;
                case "Date":
                    clinicalAssets = clinicalAssets.OrderBy(s => s.PurchaseDate);
                    break;
                case "date_desc":
                    clinicalAssets = clinicalAssets.OrderByDescending(s => s.WarrantyEndDate);
                    break;
                default:
                    clinicalAssets = clinicalAssets.OrderBy(s => s.ClinicalAssetID);
                    break;
            }
            int pageSize = 10;
            int pageNumber = (page ?? 1);
            return View(await clinicalAssets.ToPagedListAsync(pageNumber, pageSize));
        }


        public async Task<ActionResult> Arjo(string sortOrder2, string currentFilter2, string searchString2, int? page)
        {
            ViewBag.CurrentSort = sortOrder2;
            ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder2) ? "name_desc" : "";
            ViewBag.DateSortParm = sortOrder2 == "Date" ? "date_desc" : "Date";

            if (searchString2 != null)
            {
                page = 1;
            }
            else
            { 
            }

            ViewBag.CurrentFilter = searchString2;

            var clinicalAssets = from s in db.ClinicalAssets
                                 where  (s.AssetTypeID.Equals (2) || s.AssetTypeID.Equals(3) )
                                 select s;



            if (!String.IsNullOrEmpty(searchString2))
            {
                clinicalAssets = clinicalAssets.Where(s => s.SerialNo.Contains(searchString2)
                                       || s.PoNo.Contains(searchString2));
            }



            switch (sortOrder2)
            {
                case "name_desc":
                    clinicalAssets = clinicalAssets.OrderByDescending(s => s.PoNo);
                    break;
                case "Date":
                    clinicalAssets = clinicalAssets.OrderBy(s => s.PurchaseDate);
                    break;
                case "date_desc":
                    clinicalAssets = clinicalAssets.OrderByDescending(s => s.WarrantyEndDate);
                    break;
                default:
                    clinicalAssets = clinicalAssets.OrderBy(s => s.ClinicalAssetID);
                    break;
            }
            int pageSize = 10;
            int pageNumber = (page ?? 1);
            return View(await clinicalAssets.ToPagedListAsync(pageNumber, pageSize));
        }

        public async Task<ActionResult> Index(string sortOrder1, string currentFilter1, string searchString1, int? page)
        {
            ViewBag.CurrentSort = sortOrder1;
            ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder1) ? "name_desc" : "";
            ViewBag.DateSortParm = sortOrder1 == "Date" ? "date_desc" : "Date";

            if (searchString1 != null)
            {
                page = 1;
            }
            else
            {
                searchString1 = currentFilter1;
            }

            ViewBag.CurrentFilter = searchString1;

            var clinicalAssets = from s in db.ClinicalAssets.Include(c => c.ModelName) select s;

            if (!String.IsNullOrEmpty(searchString1))
            {
                clinicalAssets = clinicalAssets.Where(s => s.SerialNo.Contains(searchString1)
                                       || s.PoNo.Contains(searchString1));
            }

            switch (sortOrder1)
            {
                case "name_desc":
                    clinicalAssets = clinicalAssets.OrderByDescending(s => s.PoNo);
                    break;
                case "Date":
                    clinicalAssets = clinicalAssets.OrderBy(s => s.PurchaseDate);
                    break;
                case "date_desc":
                    clinicalAssets = clinicalAssets.OrderByDescending(s => s.WarrantyEndDate);
                    break;
                default:
                    clinicalAssets = clinicalAssets.OrderBy(s => s.ClinicalAssetID);
                    break;
            }
            int pageSize = 10;
            int pageNumber = (page ?? 1);
            return View(await clinicalAssets.ToPagedListAsync(pageNumber, pageSize));
        }

Я бы ожидал, что каждая страница отфильтрует свою таблицу, а не таблицы других страниц.

1 Ответ

0 голосов
/ 23 марта 2019

Я был на правильном пути, мне также нужно было обновить ссылку @ html.Action и sortParm.

  public async Task<ActionResult> Index(string sortOrder1, string currentFilter1, string searchString1, int? page1)
        {
            ViewBag.CurrentSort1 = sortOrder1;
            ViewBag.NameSortParm1 = String.IsNullOrEmpty(sortOrder1) ? "name_desc" : "";
            ViewBag.DateSortParm1 = sortOrder1 == "Date" ? "date_desc" : "Date";

            if (searchString1 != null)
            {
                page1 = 1;
            }
            else
            {
                searchString1 = currentFilter1;
            }

            ViewBag.CurrentFilter1 = searchString1;

            var clinicalAssets = from s in db.ClinicalAssets.Include(c => c.ModelName) select s;

            if (!String.IsNullOrEmpty(searchString1))
            {
                clinicalAssets = clinicalAssets.Where(s => s.SerialNo.Contains(searchString1)
                                       || s.PoNo.Contains(searchString1));
            }

            switch (sortOrder1)
            {
                case "name_desc":
                    clinicalAssets = clinicalAssets.OrderByDescending(s => s.PoNo);
                    break;
                case "Date":
                    clinicalAssets = clinicalAssets.OrderBy(s => s.PurchaseDate);
                    break;
                case "date_desc":
                    clinicalAssets = clinicalAssets.OrderByDescending(s => s.WarrantyEndDate);
                    break;
                default:
                    clinicalAssets = clinicalAssets.OrderBy(s => s.ClinicalAssetID);
                    break;
            }
            int pageSize = 10;
            int pageNumber = (page1 ?? 1);
            return View(await clinicalAssets.ToPagedListAsync(pageNumber, pageSize));
        }
...