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

如何通过JS程序化修改Telerik MVC服务端网格分页下拉值并触发刷新

解决Telerik MVC服务端网格程序化修改页大小并触发刷新的问题

我之前也踩过这个坑,Telerik的服务端网格在处理分页页大小变更时,光修改下拉框的值是不够的,必须要触发组件的内部事件或者直接联动数据源才能让网格刷新。你之前的几种方法没生效,主要是因为没触发关键的刷新逻辑,下面给你两种靠谱的解决方案:

方法一:通过分页下拉框组件触发变更

这种方法直接操作页大小选择器的Kendo DropDownList组件,核心是手动触发change事件,因为服务端网格依赖这个事件来发起数据刷新请求:

// 获取页大小选择器的DropDownList实例
var pageSizeDropDown = $(".k-pager-sizes select").data("kendoDropDownList");
// 设置目标页大小(确保这个值是下拉框里存在的选项值)
pageSizeDropDown.value(userPreferencePageSize);
// 关键步骤:手动触发change事件,通知网格刷新
pageSizeDropDown.trigger("change");

方法二:直接操作网格数据源(更稳妥)

这种方法绕过分页器,直接操作网格的数据源,更不容易出问题,适合需要精准控制的场景:

// 替换成你的网格ID,比如你网格的HTML元素ID是"ProductGrid"
var grid = $("#YourGridID").data("kendoGrid");
// 设置数据源的页大小
grid.dataSource.pageSize(userPreferencePageSize);
// 触发网格刷新(回到第一页,避免页大小变更后当前页超出总页数的情况)
grid.dataSource.page(1);

为什么你之前的方法无效?

  • 第一种方法只设置了DropDownList的value,但没有触发组件的change事件,Telerik的服务端网格没有收到变更通知,自然不会发起新的请求。
  • 第二种方法单独调用pager.pageSize(),但服务端网格的分页逻辑是和数据源绑定的,分页器本身不会主动同步数据源的设置,所以网格不会刷新。
  • 第三种方法用jQuery直接修改DOM的选中状态,完全没有触达Telerik组件的内部逻辑,组件根本不知道值已经改变了。

注意事项

  • 确保代码在网格初始化完成后执行,比如放在$(document).ready()回调里,或者网格的dataBound事件中。
  • userPreferencePageSize必须是下拉框中已经存在的有效值(比如10、20、50这类预设值),否则组件会忽略这个设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:13:50