I currently have pagination working in my MVC 3 project using the PagedList library (https://github.com/TroyGoode/PagedList).
I would like to convert this code to update the page using ajax with the new results rather then refreshing the whole page. I'm not really sure how to go about that. Im rather new to MVC coming from Webforms. Any help would be greatly appreciated!
Heres my code:
Home Controller:
//#####################################
// ActionResult = Retrieve Comments
//#####################################
[ChildActionOnly]
public ActionResult _Comments(int ProductID, int? Page)
{
//Perform the Database Query.
try
{
//SQL Query - Get * records
var Model = from r in DB.Comments where r.ProductID == ProductID select r;
//Page number passed in via url. Default to 1 if not specified.
var PageNumber = Page ?? 1;
//Grab 6 results from the result set.
var Results = Model.ToPagedList(PageNumber, 6);
//Store Paged Result set in ViewBag for Paging.
ViewBag.Results = Results;
//Store in ViewBag for display (Page 1 of 43)
ViewBag.PageNumber = PageNumber;
//Get Total Pages: Divide Total Records by 6 Records per page.
ViewBag.PageCount = Model.Count() / 6 + 1;
//Return Records to my view.
return PartialView(Results);
}
//There was an error.
catch
{
//ViewBag.ErrorMessage = ex;
return PartialView("Error");
}
}
PartialView: _Comments
@model IEnumerable<DH.Models.Comment>
@using PagedList.Mvc;
@using PagedList;
@{
//No Comments Yet
if (@Model.Count() == 0)
{
<div id="CommentStatus">Be the first to comment on this product!</div>
}
//There are comments!
else
{
foreach (var item in Model)
{
//html for writing out the comments...
}
}
}
<div>Page @ViewBag.PageNumber of @ViewBag.PageCount</div>
@Html.PagedListPager((IPagedList)ViewBag.Results, Page => Url.Action("Index", new { Page = Page }), new PagedListRenderOptions { LinkToPreviousPageFormat = "< Prev", LinkToNextPageFormat = "Next >", LinkToLastPageFormat = "Última >>" })
Model
namespace DH.Models
{
public class Comment
{
public int CommentID { get; set; }
public int ProductID { get; set; }
public string Author { get; set; }
public string Message { get; set; }
public DateTime MessageDate { get; set; }
public int ThumbsUp { get; set; }
public int ThumbsDown { get; set; }
public string IP { get; set; }
}
}