Siema, czy moglibyście doradzić mi gdzie powinny znajdować się takie funkcjonalności jak:filtrowanie, sortowanie, paginacja? Na jakiej warstwie je osadzić ?
A mało to tutoriali o tym jest?
Wszędzie są w kontrolerze ale to nie są jakieś rozbudowane aplikacje i zastanawiam się czy nie jest to robione na szybko..
No to co chciałbyś za każdym razem pobierać wszystkie rekordy z bazy i wysyłać do widoku żeby on to sobie sortował, stronicował itp?
Jak mam rozumieć:
za każdym razem pobierać wszystkie rekordy
Jeżeli posiadam coś takiego, kod z tutoriala, to przecież za każdym razem pobiera listę studentów z bazy, w momencie naciśnięcia danej kolumny do posortowania ?
public ViewResult Index(string sortOrder, string searchString)
{
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";
var students = from s in db.Students
select s;
if (!String.IsNullOrEmpty(searchString))
{
students = students.Where(s => s.LastName.ToUpper().Contains(searchString.ToUpper())
|| s.FirstMidName.ToUpper().Contains(searchString.ToUpper()));
}
switch (sortOrder)
{
case "name_desc":
students = students.OrderByDescending(s => s.LastName);
break;
case "Date":
students = students.OrderBy(s => s.EnrollmentDate);
break;
case "date_desc":
students = students.OrderByDescending(s => s.EnrollmentDate);
break;
default:
students = students.OrderBy(s => s.LastName);
break;
}
return View(students.ToList());
}
roy23 napisał(a):
Siema, czy moglibyście doradzić mi gdzie powinny znajdować się takie funkcjonalności jak:filtrowanie, sortowanie, paginacja? Na jakiej warstwie je osadzić ?
Te mechanizmy należy zaimplementować w warstwie dostępu do danych, bo są one ściśle związane z określoną technologią i rodzajem bazy danych.
roy23 napisał(a):
Jeżeli posiadam coś takiego, kod z tutoriala, to przecież za każdym razem pobiera listę studentów z bazy, w momencie naciśnięcia danej kolumny do posortowania ?
Owszem, w tym okropnym kodzie tak jest. Dlatego właśnie stosuje się paginację, żeby nie pobierać wszystkich rekordów za każdym razem.
Nie podoba mi się Twój kod.
Moim zdaniem takie sortowania jak: po dacie, alfabetycznie dotyczą stricte danych które już załadowałeś - więc to ogarniałbym w javascript.
Kod został przytoczony z oficjalnej strony ASP.NET, tak więc miałem rację co do kodu pisanego
na szybko.
Czy mógłbym prosić o jaśniejsze sprecyzowanie zastosowania paginacji przy sortowaniu? Albo o jakiś artykuł, tutorial? Nie bardzo wiem o co chodzi :)
roy23 napisał(a):
Czy mógłbym prosić o jaśniejsze sprecyzowanie zastosowania paginacji przy sortowaniu?
No chyba najpierw sortujesz, potem stronicujesz, w drugą stronę to nie ma żadnego sensu.