Kendo UI 刷新数据源信息

Kendo UI Treeview 刷新数据源

在开发过程中,使用KendoUI的treeview时遇到了一个问题:需要从后台重新查询数菜单数据,然后刷新菜单树,显示出刚刚新增的节点信息。本身Kendo UI国内用的就不算很多,文档还是英文文档,为了以防万一,记录一下

1.首先去后台查询树形数据

基本格式是:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ndJMRill-1664257714866)(file://C:\Users\licb\AppData\Roaming\marktext\images\2022-09-27-13-36-53-image.png)]

我是在js中将这些数据转换成层次数据,类似这种
在这里插入图片描述

转换的代码为

var listToMap = function (tempData) {
            // 删除所有的children,以防止多次调用
            var treeDatas = [];
            tempData.forEach(function (item) {
                delete item.children;
            });
            tempData.map(item => {
                item.label = item.label;
                item.text = item.text;
                if (item.hasChildren == 0) {
                    item.hasChildren = true;
                } else {
                    item.hasChildren = false;
                }
            });
            let map = {}; // 构建map
            tempData.forEach(i => {
                map[i.label] = i; // 构建以label为键 当前数据为值
            });
            let treeData = [];
            tempData.forEach(child => {
                const mapItem = map[child.parent]; // 判断当前数据的pid是否存在map中
                if (mapItem) {
                    // 存在则表示当前数据不是最顶层的数据
                    // 注意: 这里的map中的数据是引用了tempData的它的指向还是arr,当mapItem改变时arr也会改变,踩坑点
                    (mapItem.items || (mapItem.items = [])).push(child); // 这里判断mapItem中是否存在child
                } else {
                    // 不存在则是顶层数据
                    treeData.push(child);
                }
            });
            var tree = {
                hasChildren:true,
                icon:"folder",
                items:treeData,
                label:"0",
                text : "指标库"
            };
            treeDatas.push(tree);
            return treeDatas;
        };

将数据转换之后,后面就简单了,只需一个操作

var dataSource = { data : mapData };
$("#tree01").data("kendoTreeView").setDataSource(dataSource);

将转换后的数据mapData放进dataSource里面,再通过菜单树的对象将值放进去即可。因为之前不确定树能不能用浪费了贼多时间,看网上很多人是这样操作的

$("#treeview").kendoTreeView({
        checkboxes: true,
        dataSource: dataSource
    });

但是我自己用的时候用不了,菜单树那里会一直显示加载中,然后我就不太懂了,果然还是简单粗暴来的好使。

特此记录,下次不迷路!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值