J'ai un contrôleur appelé "Catégories" et vous pouvez taper quelques lettres et récupérer une liste filtrée.Maintien de l'état lors de la radiomessagerie
Matière assez standard. Cependant, je combine l'ensemble de résultats avec la pagination et j'ai rencontré un problème.
Lorsque vous entrez dans la page pour la première fois, toutes les catégories sont répertoriées. Lorsque vous tapez dans la zone de texte, vous obtenez une liste filtrée, mais je ne renvoie que la liste et la ré-afficher. Je ne montre pas la page entière à nouveau.
Maintenant, quand je clique sur le lien de la page 2, les filtres sont perdus et je suis à nouveau dans toute ma liste.
Je me rends compte que dans le code ci-dessous je ne saisis pas le texte du filtre dans ma catégorie ActionResult et c'est mon problème je pense. Juste besoin de savoir comment l'obtenir là-bas.
Comment puis-je maintenir la liste? Code pertinent ci-dessous;
Contrôleur
public ActionResult Categories(int? page)
{
CategoriesDataRepository categoriesRepository = new CategoriesDataRepository();
CategoriesFormViewModel fvm = new CategoriesFormViewModel();
fvm.categories = categoriesRepository.All().OrderBy(x => x.name).ToPagedList(page.HasValue ? page.Value - 1 : 0, CacheHelper.Get().CategoryPageSize);
return View(fvm);
}
public ActionResult jQueryFilterCategories(String filter)
{
CategoriesDataRepository categoriesRepository = new CategoriesDataRepository();
return PartialView("CategoryList", categoriesRepository.All().Where(x => x.name.ToLower().Contains(filter.ToLower())).OrderBy(x => x.name).ToPagedList(0, CacheHelper.Get().CategoryPageSize));
}
Voir
<script type="text/javascript">
$('.FindCategory').keyup(function() {
var searchText = $('.FindCategory').val();
$.post('/Home/jQueryFilterCategories', { filter: searchText }, function (newHTML) {
$('.Categories').html(newHTML);
return false;
});
});
</script>
<div class="pager">
<%= Html.Pager(Helpers.CacheHelper.Get().CategoryPageSize, Model.categories.PageNumber, Model.categories.TotalItemCount, "Categories", "Home")%>
</div>
<div class="CategoryList">
<div>
<p>Type here to find categories <%= Html.TextBox("searchTerm", Model.searchTerm, new { @class = "FindCategory" })%></p>
</div>
<div class="Categories">
<% Html.RenderPartial("CategoryList", Model.categories); %>
</div>
</div>
Avez-vous envisagé d'utiliser une grille côté client comme JqGrid? J'aime ça parce que je n'ai pas besoin d'actualiser toute la page pour la pagination, le tri ou le filtrage. – Ryan
Je l'avais considéré comme mon je n'aime pas beaucoup l'approche de la grille comme ils regardent toujours (griddy) et j'essaie de rendre cela accessible même pour ma et ma bouilloire savent ce que je veux dire? – griegs