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

Kendo UI Grid dataBound事件设分页陷循环及MVC初始化分页问题

Kendo UI Grid 分页设置解决方案

一、初始化时直接指定分页

在ASP.NET MVC Razor的Grid配置中,可直接通过DataSource的.Page()方法设置初始页码,无需额外事件处理:

@(Html.Kendo().Grid<YourModelType>()
    .Name("yourGrid")
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(10) // 设置每页条数
        .Page(2) // 直接指定初始加载第2页
        .Read(read => read.Action("GetGridData", "Home"))
    )
    .Pageable() // 启用分页控件
    // 其他Grid配置(列、样式等)
)

这种方式最直接,Grid初始化时会自动请求对应页码的数据,不会出现循环问题。

二、避免dataBound事件递归循环

如果必须通过dataBound事件动态切换分页,核心是添加状态标志位,防止重复触发分页逻辑:

1. 在Razor中绑定事件

@(Html.Kendo().Grid<YourModelType>()
    .Name("yourGrid")
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(10)
        .Read(read => read.Action("GetGridData", "Home"))
    )
    .Pageable()
    .Events(events => events.DataBound("onGridDataBound")) // 绑定dataBound事件
)

2. 编写JavaScript逻辑(带标志位)

// 全局标志位,标记是否正在执行分页切换
var isProcessingPageChange = false;

function onGridDataBound(e) {
    // 如果正在处理分页,直接返回,避免递归
    if (isProcessingPageChange) {
        isProcessingPageChange = false;
        return;
    }

    var targetPage = 3; // 你需要跳转的目标页码
    var currentPage = e.sender.dataSource.page();

    // 仅当当前页码与目标页码不一致时执行切换
    if (currentPage !== targetPage) {
        isProcessingPageChange = true;
        e.sender.dataSource.page(targetPage);
    }
}

原理说明

调用dataSource.page()会触发Grid重新发起数据请求,请求完成后再次触发dataBound事件。通过标志位控制,第二次进入事件时直接跳过分页操作,从而终止递归循环,结束加载状态。

三、初始化后动态设置分页(非事件方式)

若需要在Grid初始化完成后(比如从URL参数、本地存储获取页码)设置分页,可在document.ready中直接调用,无需依赖dataBound事件:

$(document).ready(function() {
    var grid = $("#yourGrid").data("kendoGrid");
    // 示例:从URL参数获取页码
    var targetPage = parseInt(new URLSearchParams(window.location.search).get("page"));
    
    if (targetPage && targetPage > 0) {
        grid.dataSource.page(targetPage);
    }
});

这种方式只会执行一次分页切换,不会触发递归问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 04:22:15