Javascript MVC3中使用ajax刷新Webgrid

Javascript MVC3中使用ajax刷新Webgrid,javascript,jquery,asp.net-mvc-3,webgrid,Javascript,Jquery,Asp.net Mvc 3,Webgrid,当按下“刷新”按钮时,我需要刷新一个Webgrid。我还有一个搜索输入 一切都很好,除了每次我点击刷新,页码都被设置回1 这是我的密码 控制器 public ActionResult ListImporting(string searchText = "", int page = 1) { ViewBag.RowsPerPage = 2; searchText = searchText.Trim(); Vi

当按下“刷新”按钮时,我需要刷新一个Webgrid。我还有一个搜索输入

一切都很好,除了每次我点击刷新,页码都被设置回1

这是我的密码

控制器

public ActionResult ListImporting(string searchText = "", int page = 1)
        {
            ViewBag.RowsPerPage = 2;

            searchText = searchText.Trim();
            ViewBag.searchText = searchText;
            ViewBag.page = page;

            DtoPaginatedResult<ListImportingDTO> model = listService.GetListsInProgress(page, ViewBag.RowsPerPage, searchText);

            if (Request.IsAjaxRequest())
                return PartialView("ListImportingGrid", model);
            else
                return View(model);

        }
在部分中,我有网格和当前函数

function updateGrid() {     
    var pageNumber = @ViewBag.page;
    console.log(pageNumber);
    $.ajax(
     { type: "GET" ,
         url: '/Admin/ListImporting/',
         data: { searchText: $("#searchBox").val(),  
         page: pageNumber
             } ,
             dataType: "html" ,
             success: function  (data){             
                 $("#resultList").html(data);
                  } 
         })
    }

您的页码将重置回1,因为每次调用updateGrid时,您都将其重置为ViewBag.page

换句话说,编译后的razor代码如下所示

function updateGrid() {
    var pageNumber = 1;
    ....
所以,如果您不想在调用updateGrid时重置pageNumber,您应该在其他地方创建pageNumber,如下所示

var pageNumber = ViewBag.page;
function updateGrid() {
     ....

您的页码将重置回1,因为每次调用updateGrid时,您都将其重置为ViewBag.page

换句话说,编译后的razor代码如下所示

function updateGrid() {
    var pageNumber = 1;
    ....
所以,如果您不想在调用updateGrid时重置pageNumber,您应该在其他地方创建pageNumber,如下所示

var pageNumber = ViewBag.page;
function updateGrid() {
     ....

加载页面时,您正在将页码硬编码为ViewBag.page,该页码在页面加载时始终等于一

相反,您需要做的是在partialview中创建一个隐藏的输入,并将javascript代码放在主视图中

然后,当updateGrid函数被触发时,通过javascript查看空间视图,并找到页码隐藏字段中的值

切换到PagedList,使用ajax、分页和webgrids会容易得多。

加载页面时,您将把页码硬编码到ViewBag.page,这在页面加载时总是等于一

相反,您需要做的是在partialview中创建一个隐藏的输入,并将javascript代码放在主视图中

然后,当updateGrid函数被触发时,通过javascript查看空间视图,并找到页码隐藏字段中的值

切换到PagedList,使用ajax、分页和webgrids会容易得多。

但当我点击第2页时。。。。在控制器中,它正在执行ViewBag.page=2。。。并返回部分。。。之后,当我点击更新。。。为什么ViewBag.page=2???但是当我点击第2页时。。。。在控制器中,它正在执行ViewBag.page=2。。。并返回部分。。。之后,当我点击更新。。。为什么ViewBag.page=2???我不知道为什么这样做有效,而把它放到脚本中却没有。。这是代码,在updateGrid中,我刚刚通过JQueryIt获得了值。这可能是一个缓存问题,我总是尝试在外部js文件或主视图中而不是在局部视图中执行javascript。很高兴这对你有用。如果您需要更多的webgrid示例,请告诉我,我正在进行一些很酷的搜索、分页、页面大小和ajax webgrid驱动的视图。我不知道为什么这样做有效,而将其放在脚本中却没有。。这是代码,在updateGrid中,我刚刚通过JQueryIt获得了值。这可能是一个缓存问题,我总是尝试在外部js文件或主视图中而不是在局部视图中执行javascript。很高兴这对你有用。如果您需要更多webgrid示例,请告诉我,我正在进行一些很酷的搜索、分页、页面大小和ajax webgrid驱动的视图。