ajaxasp.net-mvc-3paginationwebgrid

Ajax WebGrid Paging MVC3


I'm using WebGrid and I need to switch between pages with Ajax.

Index Code

<script src="../../Scripts/jquery.unobtrusive-ajax.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
@using (Ajax.BeginForm("GetGrid", new AjaxOptions() { UpdateTargetId = "Res" }))
{
    <input type="text" />
    <input type="submit" value="start" />
    <div id="Res">
    </div> 
}

Result partial view

@model IEnumerable<MvcApplication1.Controllers.Model>

<div id="grid2">
@{
    var grid = new WebGrid(source:Model,rowsPerPage:6,ajaxUpdateContainerId: "grid2");

    @grid.GetHtml(htmlAttributes: new { id = "grid2" },

          columns: grid.Columns(
                    grid.Column("Someting")
    ));
}
</div>

Controller Code

 public class ABCController : Controller
{
    //
    // GET: /ABC/

    public ActionResult Index()
    {
        return View();
    }
    public static  List<Model> mo = new List<Model>();
    [HttpPost]
    public ActionResult GetGrid()
    {
        for (int i = 0; i < 1000; i++)
        {
            mo.Add(new Model() { Someting = i.ToString() });
        }
        return PartialView("Result", mo);
    }

}

    public class Model
    {
        public string Someting { get; set; }
    }

This work for first page but nothing happens for other pages.


Solution

  • After some hours i could not find some thing that help me.i noticed to html code of my page links. page link

    <a href="#" onclick="$('#grid2').load('/ABC/GetGrid?page=2&amp;__=635163360142144025 #grid2');">2</a>
    

    so i finally got how it's work.i add an ActioResult to my controller like this:

        [HttpGet]
        public ActionResult GetGrid(int page)
        {
            return PartialView("Result",mo);
        }
    

    and worked.i hope this be helpfull for some one