1

我有一个 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);
                  } 
         })
    }
4

2 回答 2

1

加载页面时,您将页码硬编码为 ViewBag.page ,这在页面加载时总是等于 1。

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

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

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

于 2013-07-12T14:31:00.293 回答
0

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

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

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

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

var pageNumber = ViewBag.page;
function updateGrid() {
     ....
于 2013-07-12T14:17:47.903 回答