You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jquery无法设置PageIndex,手动赋值仍默认1的解决办法

解决排序时PageIndex始终被重置为1的问题

看起来你遇到了一个很常见的分页排序坑——明明手动设置了PageIndex,结果每次排序都被强制拉回第1页,我来帮你一步步排查解决:

第一步:先定位问题出在前端还是后端

首先打开浏览器的开发者工具(按F12),切换到「Network」标签,然后触发你的排序操作:

  • 找到发送给/admin/Setting/UserGrid的GET请求
  • 查看请求的Query String参数,确认PageIndex到底是你设置的2,还是被改成了1

如果这里显示PageIndex=2,那问题100%在后端代码;如果显示PageIndex=1,那问题出在前端的逻辑里。

第二步:如果是前端传值错误,这么修

看你给出的代码,LoadUser函数里的PageIndex是硬写的2,但可能存在这些问题:

  1. 调用LoadUser的地方,没有传递当前的页码,反而被其他逻辑覆盖成了1
  2. 页面上的分页控件默认把页码重置为1,和你的手动设置冲突

修复方案:

修改LoadUser函数,让它能接收当前的页码,而不是硬编码:

// 给函数加个pageIndex参数,用来接收当前页码
function LoadUser(columnname, sort, IsClient, pageIndex) { 
    var className = $('#' + columnname).attr('class'); 
    IsClient = $('#ChkIsClient').is(':checked');
    // 如果没传pageIndex,就取当前分页控件的页码,或者默认1(根据你的实际情况调整)
    pageIndex = pageIndex || parseInt($('#currentPageInput').val()) || 1; 
    $.ajax({ 
        type: "GET", 
        url: "/admin/Setting/UserGrid", 
        contentType: "application/json; charset=utf-8", 
        data: { 
            PageIndex: pageIndex, 
            filter: $("#txtSearchUser").val(), 
            SortColumn: columnname, 
            SortDirection: sort,
            IsClient: IsClient
        },
        // 剩下的ajax回调逻辑...
    });
}

然后在调用LoadUser的时候,把当前的页码传进去,比如点击排序按钮时:

// 假设你的排序按钮有.sort-column类
$('.sort-column').click(function() {
    var colId = $(this).attr('id');
    var sortDir = $(this).hasClass('asc') ? 'desc' : 'asc';
    // 从分页控件里获取当前页码,比如你用了一个隐藏input存当前页
    var currentPage = parseInt($('#currentPageInput').val());
    // 调用LoadUser时传入当前页码
    LoadUser(colId, sortDir, $('#ChkIsClient').is(':checked'), currentPage);
});

第三步:如果是后端重置了PageIndex,这么修

这是最常见的坑!很多人写后端逻辑时,会默认在排序时把页码重置为1,比如这样的代码:

public IActionResult UserGrid(int PageIndex = 1, string filter = "", string SortColumn = "", string SortDirection = "", bool IsClient = false)
{
    // 就是这段代码在搞鬼!
    if (!string.IsNullOrEmpty(SortColumn))
    {
        PageIndex = 1; // 排序时强制回到第一页
    }
    // 剩下的分页查询逻辑...
}

如果你的后端有这段逻辑,直接删掉它就行。如果业务上需要在首次排序时回到第一页,可以加个判断:比如只有当前端没有传PageIndex(也就是用了默认值1)的时候才重置,而不是不管前端传什么都强制改成1。

另外还要检查后端参数的拼写是否和前端一致(比如前端传的是PageIndex,后端是不是写成了pageindex?不过C#默认大小写不敏感,但最好统一)。

最后测试一下:修改完后,手动设置PageIndex=2触发排序,看请求参数和后端接收的值是否一致,分页结果是否正确显示第2页的内容。

内容的提问来源于stack exchange,提问作者Breathing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:33:48