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

如何在Kendo TreeList中使用Pageable?能否添加及配置分页功能?

Kendo TreeList 分页功能实现与配置指南

Absolutely, Kendo TreeList does support pagination—let me break down exactly how to enable, configure, and make the most of this feature for your project.

一、核心确认:Kendo TreeList 支持分页吗?

Yes, pagination is a built-in feature of Kendo TreeList. You don’t need any third-party plugins—just proper configuration of the TreeList component and its data source to get it working.

二、如何启用并配置分页功能

1. 基础启用与完整示例

Here’s a complete, ready-to-use example that enables pagination and includes common customizations:

<div id="treelist"></div>

<script>
$("#treelist").kendoTreeList({
  // 定义TreeList列
  columns: [
    { field: "name", title: "部门名称" },
    { field: "position", title: "职位" },
    { field: "salary", title: "薪资", format: "{0:c}" }
  ],
  // 配置数据源
  dataSource: {
    transport: {
      read: {
        url: "/your-api-endpoint", // 替换为你的数据接口
        dataType: "json"
      }
    },
    schema: {
      model: {
        id: "id", // 必须:唯一标识字段
        parentId: "parentId", // 必须:父节点标识字段,用于构建树形结构
        fields: {
          parentId: { nullable: true },
          id: { type: "number" }
        }
      },
      // 后端分页时,指定数据和总条数的返回字段
      data: "data",
      total: "total"
    },
    pageSize: 10, // 默认每页显示10条
    serverPaging: true // 开启后端分页(数据量大时推荐);前端分页设为false
  },
  // 关键:启用分页控件并自定义配置
  pageable: {
    pageSizes: [5, 10, 20, "all"], // 允许用户切换每页显示数量
    buttonCount: 5, // 分页栏显示的页码按钮数量
    refresh: true, // 显示刷新按钮
    // 自定义本地化提示文本
    messages: {
      display: "显示 {0}-{1} 条,共 {2} 条",
      empty: "暂无数据",
      page: "页",
      of: "/ {0}",
      itemsPerPage: "条每页",
      first: "首页",
      previous: "上一页",
      next: "下一页",
      last: "末页",
      refresh: "刷新"
    }
  }
});
</script>

2. 关键配置项说明

  • pageable 配置:开启后会在TreeList底部渲染分页控件,子选项可以自定义其功能和外观:
    • pageSizes:提供可选的每页条数下拉菜单,"all"选项允许用户查看所有数据
    • refresh:添加刷新按钮,点击后重新加载当前页数据
    • messages:替换默认的英文提示为自定义文本(比如中文)
  • dataSource.pageSize:设置默认每页显示的记录数
  • serverPaging:
    • true:适合大数据量场景,前端会向服务器发送page(当前页码,从1开始)和pageSize参数,后端需返回对应页的数据和总条数
    • false:小数据量场景,前端一次性加载所有数据并自动处理分页

3. 后端分页的处理逻辑(当serverPaging: true时)

你的后端接口需要接收page和pageSize参数,计算需要跳过的记录数:

// 示例:Node.js/Express 后端逻辑
const skip = (req.query.page - 1) * req.query.pageSize;
const data = await YourModel.find().skip(skip).limit(parseInt(req.query.pageSize));
const total = await YourModel.countDocuments();

res.json({ data, total });

返回的JSON格式必须包含data(当前页数据)和total(总记录数),这样分页控件才能正确计算总页数。

三、常见注意事项

  • 确保schema.model中的id和parentId配置正确,这是TreeList构建树形结构和保持分页后层级关系的核心
  • 后端分页时,必须返回total字段,否则分页控件无法显示总页数和总条数
  • 如果需要保留分页状态(比如页面刷新后回到当前页),可以结合Kendo的stateSave功能,或者自行存储page和pageSize参数到本地存储

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:52:02