ASP.NET MVC свободный фильтр serach при пейджинге
Привет,
Я новичок в asp.net в MVC бритвы.
У меня есть форма поиска с несколькими serach creteria (текстовое поле и выпадающий список).
Моя ошибка заключается в том, что когда я фильтрую, например, свою таблицу, которая изначально содержит 100 строк, она дает мне 50 строк. Но когда я нажимаю на вторую страницу (номер 2 в подкачке), я теряю фильтрацию, и выделения в моих 3 выпадающих списках равны нулю ( я теряю выделение в моем 3 выпадающих списках, так что все параметры становятся нулевыми.)... так что это дает мне снова 100 строк.
Я попробовал эту статью, но ничего не понял .
Пример для перечисления, сортировки, поиска данных и добавления разбиения на страницы в ASP.Net MVC 5[^]
Пожалуйста помочь. Спасибо.
--========================================================================
-- Контроллер
--========================================================================
public ActionResult Index(string sortOrder, string currentFilter, int? page, string EtablissementCode, string ClarderSousSecteur, string SearchString, int AnneeUniversitaire = 20122013) { ViewBag.CurrentSort = sortOrder; ViewBag.ClarderSousSecteurSortParm = String.IsNullOrEmpty(sortOrder) ? "ClarderSousSecteur_desc" : "ClarderSousSecteur_asc"; if (SearchString != null) { page = 1; } else { SearchString = currentFilter; } ViewBag.CurrentFilter = SearchString; ViewBag.AnneeUniversitaire = new SelectList(db.tblAnneeDeclarations, "AnneeDeclarationCode", "AnneeDeclarationCode", AnneeUniversitaire); ViewBag.EtablissementCode = new SelectList(db.tblEtablissements, "EtablissementCode", "EtablissementCode", EtablissementCode); ViewBag.ClarderSousSecteur = new SelectList(db.tblClarderSousSecteur, "ClarderSousSecteurCode", "ClarderSousSecteurLibelle", ClarderSousSecteur); // Liste principale var USUAs = from m in db.tblUSUAs join c in db.tblClarderSousSecteur on m.ClarderSousSecteurID equals c.ClarderSousSecteurID select new USUAModel { USUAID = m.USUAID, USUACode = m.USUACode, USUALibelle = m.USUALibelle, AnneeUniversitaire = m.AnneeUniversitaire, EtablissementCode = m.EtablissementCode, ClarderSousSecteurID = c.ClarderSousSecteurID, ClarderSousSecteurCode = c.ClarderSousSecteurCode, ClarderSousSecteurLibelle = c.ClarderSousSecteurLibelle }; if (!String.IsNullOrEmpty(SearchString)) { USUAs = USUAs.Where(s => s.USUALibelle.ToUpper().Contains(SearchString.ToUpper())); //s => s.USUALibelle.Contains(SearchString)); } if (!String.IsNullOrEmpty(AnneeUniversitaire.ToString())) { USUAs = USUAs.Where(y => y.AnneeUniversitaire == AnneeUniversitaire); } if (!String.IsNullOrEmpty(EtablissementCode)) { USUAs = USUAs.Where(x => x.EtablissementCode == EtablissementCode); } if (!String.IsNullOrEmpty(ClarderSousSecteur)) { USUAs = USUAs.Where(v => v.ClarderSousSecteurCode == ClarderSousSecteur); } switch (sortOrder) { case "ClarderSousSecteur_desc": USUAs = USUAs.OrderByDescending(s => s.ClarderSousSecteurID); break; case "ClarderSousSecteur_asc": USUAs = USUAs.OrderBy(s => s.ClarderSousSecteurID); break; default: USUAs = USUAs.OrderBy(s => s.ClarderSousSecteurID); break; } int pageSize = 10; int pageNumber = (page ?? 1); return View(USUAs.ToPagedList(pageNumber, pageSize)); }
--========================================================================
-- Вид
--========================================================================
@model PagedList.IPagedList<mvcapptablesreference.models.usuamodel> @using PagedList.Mvc; <link href="~/Content/PagedList.css" rel="stylesheet" type="text/css" /> <link href="~/Content/Site.css" rel="stylesheet" type="text/css" /> @{ ViewBag.Title = "USUAs destination"; } <h2>Index</h2> Votre recherche a retourné : @Model.Count() enregistrements <p> @Html.ActionLink("Créer une nouvelle USUA", "Create") @using (Html.BeginForm("Index", "tblUSUAs", FormMethod.Get)) { <p> Année universitaire : @Html.DropDownList("AnneeUniversitaire", (SelectList)ViewBag.AnneeUniversitaire) Etablissement : @Html.DropDownList("EtablissementCode", (SelectList)ViewBag.EtablissementCode) Clarder sous secteur : @Html.DropDownList("ClarderSousSecteur", (SelectList)ViewBag.ClarderSousSecteur) </p> <p> USUA : @Html.TextBox("SearchString", ViewBag.CurrentFilter as string) <input type="submit" value="Filter" /> </p> } </p> <table class="table"> <tr> <th></th> <th> Code </th> <th> Libelle </th> <th> Etab. </th> <th> Année </th> <th> @Html.ActionLink("S-Secteur", "Index", new { sortOrder = ViewBag.ClarderSousSecteurSortParm }) </th> </tr> @foreach (var item in Model) { <tr> <td> @Html.ActionLink("Editer", "Edit", new { id=item.USUAID }) | @Html.ActionLink("Details", "Details", new { id=item.USUAID }) | @Html.ActionLink("Supprimer", "Delete", new { id=item.USUAID }) </td> <td> @item.USUACode </td> <td> @item.USUALibelle </td> <td> @item.EtablissementCode </td> <td> @item.AnneeUniversitaire </td> <td> @item.ClarderSousSecteurLibelle </td> </tr> } </table> <br /> Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) de @Model.PageCount @Html.PagedListPager(Model, page => Url.Action("Index", new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter}))</mvcapptablesreference.models.usuamodel>
Afzaal Ahmad Zeeshan
Пожалуйста, правильно отформатируйте свой код.
Anil Shrestha
Лучший из них.