Webgrid在MVC3中使用ajax刷新

时间:2013-07-12 14:12:50

标签: javascript jquery asp.net-mvc-3 webgrid

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

一切正常,但每次点击刷新时,pageNumber都会被设置回一个......

这是我的代码......

控制器

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);

        }

然后我有一个视图列表导入,调用部分...

<input id="refreshButton" type="button" value="Refresh" style="float:right"/>

<div id="resultList" style="margin-top:20px">
    @Html.Partial("ListImportingGrid", Model)
</div>

...

   $("#refreshButton").live("click",updateGrid);

在局部内部我有网格和当前函数

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);
                  } 
         })
    }

2 个答案:

答案 0 :(得分:1)

当页面加载时,您正在将页面编号硬编码为ViewBag.page,它总是等于页面加载时的页面编号。

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

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

切换到PagedList,使用ajax,分页和webgrids更容易。 https://github.com/TroyGoode/PagedList

答案 1 :(得分:0)

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

换句话说,编译的剃刀代码看起来像

function updateGrid() {
    var pageNumber = 1;
    ....

所以你应该在其他地方创建pageNumber,如果你不想在调用updateGrid时重置它,就像这样

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