在Net MVC中应用JsTree

先实现个基本用法

1 - 引入js和css

2 -  html

            <div id="list_left" class="col-md-2 pre-scrollable">
                <div class="list_wrap">
                    <p class="lead">数据列表</p>
                    <div id="jstree">
                    </div>
                </div>
            </div>

3 - js

    //初始化jstree控件
    function init_jstree() {
        $("#jstree").jstree({
            "core": {
                'data': {
                    'url': '/Home/GetTreeData',
                    'dataType': 'json',
                    success: function () {
                        //alert('ok');
                    }
                },
                'themes': {
                    'name': 'proton',
                    'responsive': true,
                    "dots": true,
                    "icons": true
                }

            }
        });
    };
View Code

4 - cs

        public JsonResult GetTreeData()
        {
            IBaseBll<TableInfo> tableBll = new BaseBll<TableInfo>();
            var treeNodes = tableBll.QueryAll().Select(m => new
            {
                id = m.Id,
                parent = m.ParentId.ToString() == "0" ? "#" : m.ParentId.ToString(),
                text = m.NameCh,
                icon = m.TreeIcon
            });
            return Json(treeNodes, JsonRequestBehavior.AllowGet);
        }
View Code

5 - 说明

  • js中themes是选择的皮肤
  • 后台代码中的treeNodes 是封装符合jstree中的,还有其他属性 详见http://www.cnblogs.com/wuhuacong/p/4759564.html
  • 表设计 详见 http://www.cnblogs.com/jeffwongishandsome/archive/2010/10/26/1861633.html 评论里有更加方案

jstree的两个基本事件

1 - changed.jstree

    $('#jstree').on("changed.jstree", function (e, data) {
        //data.node是点击的节点信息,点击节点之后的逻辑都在这里处理
        init_TableInfo(data.node.id);
        var param = { TableId: data.node.id }
        table.settings()[0].ajax.data = param;
        table.ajax.reload();
        $(".introWrap").css("display", "none");
    });
View Code

2 - ready.jstree

    $("#jstree").on("ready.jstree", function (event, data) {
        data.instance.open_node(1); // 展开root节点
        //// 隐藏根节点 http://stackoverflow.com/questions/10429876/how-to-hide-root-node-from-jstree
        $("#1_anchor").css("visibility", "hidden");
        $("li#1").css("position", "relative");
        $("li#1").css("top", "-20px");
        $("li#1").css("left", "-20px");
        $(".jstree-last .jstree-icon").first().hide();
    });
View Code

3 - 说明

  • changed中可以获取到所点击节点的所有信息,可以做逻辑判断
  • ready是所有节点加载完成后触发的,在这里我隐藏了根目录
  • jstree官网 https://www.jstree.com/
  • 借鉴 https://www.cnblogs.com/ibgo/p/4025036.html

转载于:https://www.cnblogs.com/tanfuchao/p/10547665.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值