0

0

Kendo UI OrgChart 高级定制:显示多字段与移除头像

花韻仙語

花韻仙語

发布时间:2025-11-25 14:47:02

|

533人浏览过

|

来源于php中文网

原创

Kendo UI OrgChart 高级定制:显示多字段与移除头像

本教程详细介绍了如何利用 kendo ui orgchart 的 `template` 选项,实现对组织结构图节点内容的深度定制。通过自定义 html 模板,您可以轻松展示多个业务字段(如绩效指标),并移除默认的头像显示,从而满足特定的数据可视化需求,提升图表的专业性和信息密度。

Kendo UI OrgChart 简介与默认行为

Kendo UI OrgChart 是一个功能强大的组织结构图组件,用于以层级结构可视化数据。它默认提供了一种简洁的节点显示方式,通常只包含“姓名”和“职位”两个核心信息,并可能附带一个头像。这种默认配置在许多标准场景下已足够使用。然而,在面对更复杂的数据模型时,例如需要在一个节点中展示多个业务指标或自定义属性,并且可能不需要头像时,就需要进行更深层次的定制。

默认的 Kendo UI OrgChart 节点结构通常是固定的,它通过内部机制绑定数据源中的 name 和 position 字段来显示信息。当您的数据源包含 item_desc、eoy_target、ytd_plan 等多个自定义字段,并且希望将它们全部呈现在组织结构图的每个节点上时,就需要利用 Kendo UI 提供的模板机制。

自定义节点模板:template 选项

Kendo UI OrgChart 提供了 template 选项,允许开发者完全控制每个节点(Node)的渲染方式。通过指定一个包含 HTML 结构的字符串作为 template 的值,您可以定义节点内部的任何内容、布局和样式。

在模板字符串中,您可以使用 #: fieldName # 的语法来访问当前节点数据项中的任意字段。例如,如果您的数据项包含 item_desc 字段,您就可以在模板中使用 #: item_desc # 来显示其值。

实现多字段与无头像显示

要实现 Kendo UI OrgChart 节点显示多个自定义字段并移除头像,核心步骤是构建一个包含所有所需字段的 HTML 模板,并将其赋值给 template 选项。

1. 数据准备

首先,确保您的 JSON 数据源包含了所有需要显示的信息。例如,以下是包含多个业务指标的数据结构:

[
  {
    "item_id": "195",
    "item_desc": "Fuel Cost",
    "parent_pi_kode": "193",
    "parent_pid_desc": "Blasting Cost",
    "eoy_target": 0.2,
    "eoy_actual": 0.32,
    "ytd_plan": 0.13,
    "ytd_actual": 0.14,
    "achi_pi": 107.69,
    "achi_ia": 0.0,
    "achi_ra": 0.0,
    "achi_ip": 0.0,
    "has_child": true,
    "is_expanded": true
  },
  {
    "item_id": "194",
    "item_desc": "AN Cost",
    "parent_pi_kode": "193",
    "parent_pid_desc": "Blasting Cost",
    "eoy_target": 0.2,
    "eoy_actual": 0.32,
    "ytd_plan": 0.1,
    "ytd_actual": 0.12,
    "achi_pi": 120.0,
    "achi_ia": 0.0,
    "achi_ra": 0.0,
    "achi_ip": 0.0,
    "has_child": true,
    "is_expanded": true
  },
  {
    "item_id": "196",
    "item_desc": "Oil Cost",
    "parent_pi_kode": "193",
    "parent_pid_desc": "Blasting Cost",
    "eoy_target": 0.2,
    "eoy_actual": 0.32,
    "ytd_plan": 0.08,
    "ytd_actual": 0.1,
    "achi_pi": 125.0,
    "achi_ia": 0.0,
    "achi_ra": 0.0,
    "achi_ip": 0.0,
    "has_child": true,
    "is_expanded": true
  }
]

2. 构建自定义 HTML 模板

根据您需要显示的字段,创建一个 HTML 字符串。在这个模板中,我们将移除默认的头像 Kendo UI OrgChart 高级定制:显示多字段与移除头像 标签,并为每个字段创建相应的显示元素,例如 div 或 span。为了提高可读性,可以使用

#: item_desc #

EOY Target: #: kendo.toString(eoy_target, "n2") #

EOY Actual: #: kendo.toString(eoy_actual, "n2") #

YTD Plan: #: kendo.toString(ytd_plan, "n2") #

YTD Actual: #: kendo.toString(ytd_actual, "n2") #

ACHI PI: #: kendo.toString(achi_pi, "n2") #

ACHI IA: #: kendo.toString(achi_ia, "n2") #

ACHI RA: #: kendo.toString(achi_ra, "n2") #

ACHI IP: #: kendo.toString(achi_ip, "n2") #

注意:

  • kendo.toString(value, "n2") 用于格式化数字,保留两位小数。
  • 模板中的类名(如 custom-orgchart-node)可以用于后续的 CSS 样式定义。
  • 模板中不再包含 Kendo UI OrgChart 高级定制:显示多字段与移除头像 标签,从而移除了头像显示。

3. Kendo UI OrgChart 初始化配置

在初始化 Kendo UI OrgChart 时,将上述自定义模板字符串赋值给 template 选项。同时,您需要配置 dataSource 和 schema 来正确解析数据。schema.model.id 和 schema.model.parentId 字段是构建层级关系的关键。

$("#orgchart").kendoOrgChart({
    dataSource: new kendo.data.OrgChartDataSource({
        data: orgChartData, // 您的JSON数据
        schema: {
            model: {
                id: "item_id", // 映射数据中的唯一标识字段
                parentId: "parent_pi_kode", // 映射数据中的父节点标识字段
                fields: {
                    item_desc: { type: "string" },
                    eoy_target: { type: "number" },
                    eoy_actual: { type: "number" },
                    ytd_plan: { type: "number" },
                    ytd_actual: { type: "number" },
                    achi_pi: { type: "number" },
                    achi_ia: { type: "number" },
                    achi_ra: { type: "number" },
                    achi_ip: { type: "number" }
                }
            }
        }
    }),
    // 启用展开/折叠功能,如果您的数据有has_child和is_expanded字段
    // 这通常由OrgChartDataSource自动处理,但确保数据源配置正确
    template: "
" + "
" + "#: item_desc #" + "
" + "
" + "

EOY Target: #: kendo.toString(eoy_target, 'n2') #

Whimsical
Whimsical

Whimsical推出的AI思维导图工具

下载
" + "

EOY Actual: #: kendo.toString(eoy_actual, 'n2') #

" + "

YTD Plan: #: kendo.toString(ytd_plan, 'n2') #

" + "

YTD Actual: #: kendo.toString(ytd_actual, 'n2') #

" + "

ACHI PI: #: kendo.toString(achi_pi, 'n2') #

" + "

ACHI IA: #: kendo.toString(achi_ia, 'n2') #

" + "

ACHI RA: #: kendo.toString(achi_ra, 'n2') #

" + "

ACHI IP: #: kendo.toString(achi_ip, 'n2') #

" + "
" + "
" });

4. 样式调整 (CSS)

为了让自定义节点看起来更美观,可以添加一些 CSS 样式。

.k-orgchart-node {
    width: 250px; /* 调整节点宽度以容纳更多信息 */
    min-height: 180px; /* 调整节点最小高度 */
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
    border-radius: 8px;
    overflow: hidden; /* 确保内容不溢出 */
}

.custom-orgchart-node {
    padding: 10px;
    background-color: #fff;
    color: #333;
    font-family: Arial, sans-serif;
    font-size: 13px;
    line-height: 1.4;
}

.custom-orgchart-node .node-header {
    background-color: #f0f0f0;
    padding: 8px 10px;
    margin: -10px -10px 10px -10px; /* 扩展背景到边缘 */
    border-bottom: 1px solid #ddd;
    font-size: 14px;
    color: #0056b3;
}

.custom-orgchart-node .node-header strong {
    display: block;
    text-align: center;
}

.custom-orgchart-node .node-body p {
    margin: 3px 0;
    display: flex;
    justify-content: space-between;
}

.custom-orgchart-node .node-body span {
    font-weight: bold;
    color: #007bff;
}

完整代码示例

将上述 HTML、JavaScript 和 CSS 片段整合到一个页面中,即可看到自定义的 Kendo UI OrgChart。




    Kendo UI OrgChart 自定义节点
    
    
    
    


    

注意事项

  1. 数据字段映射: 确保 schema.model.id 和 schema.model.parentId 正确映射到您数据源中的唯一标识和父节点标识字段。这是构建正确层级关系的基础。
  2. 模板内容与样式: 模板中的 HTML 结构和 CSS 样式直接决定了节点的视觉效果。合理设计布局和样式,以确保所有信息清晰可读,并适应不同

相关专题

更多
js获取数组长度的方法
js获取数组长度的方法

在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

553

2023.06.20

js刷新当前页面
js刷新当前页面

js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

374

2023.07.04

js四舍五入
js四舍五入

js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

731

2023.07.04

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

477

2023.09.01

JavaScript转义字符
JavaScript转义字符

JavaScript中的转义字符是反斜杠和引号,可以在字符串中表示特殊字符或改变字符的含义。本专题为大家提供转义字符相关的文章、下载、课程内容,供大家免费下载体验。

394

2023.09.04

js生成随机数的方法
js生成随机数的方法

js生成随机数的方法有:1、使用random函数生成0-1之间的随机数;2、使用random函数和特定范围来生成随机整数;3、使用random函数和round函数生成0-99之间的随机整数;4、使用random函数和其他函数生成更复杂的随机数;5、使用random函数和其他函数生成范围内的随机小数;6、使用random函数和其他函数生成范围内的随机整数或小数。

990

2023.09.04

如何启用JavaScript
如何启用JavaScript

JavaScript启用方法有内联脚本、内部脚本、外部脚本和异步加载。详细介绍:1、内联脚本是将JavaScript代码直接嵌入到HTML标签中;2、内部脚本是将JavaScript代码放置在HTML文件的`<script>`标签中;3、外部脚本是将JavaScript代码放置在一个独立的文件;4、外部脚本是将JavaScript代码放置在一个独立的文件。

656

2023.09.12

Js中Symbol类详解
Js中Symbol类详解

javascript中的Symbol数据类型是一种基本数据类型,用于表示独一无二的值。Symbol的特点:1、独一无二,每个Symbol值都是唯一的,不会与其他任何值相等;2、不可变性,Symbol值一旦创建,就不能修改或者重新赋值;3、隐藏性,Symbol值不会被隐式转换为其他类型;4、无法枚举,Symbol值作为对象的属性名时,默认是不可枚举的。

551

2023.09.20

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

CSS教程
CSS教程

共754课时 | 19万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号