سؤال

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.

هل كانت مفيدة؟

المحلول

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top