按下“刷新”按钮后,我需要刷新一个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);
}
})
}
答案 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() {
....