zoukankan      html  css  js  c++  java
  • EasyUI combotree的使用

     

     

    一、后台数据

    1.定义ComboTree类

    根据控件的属性来写

    public partial class ComboTree
        {
            public string id { get; set; }
    
            public string text { get; set; }
    
            public string iconCls { get; set; }
    
            public string state { get; set; }
    
            public string parentid { get; set; }
    
            public string attributes { get; set; }
    
            public string children { get; set; }
     
        }

    2.扩展ComboTree方法

    public partial class ComboTree
        {
            public string GetTreeString(List<ComboTree> treeList)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("[");
                List<ComboTree> parenTrees = treeList.Where(q => q.parentid == "0").ToList();   //赋权限每个角色都必须有父节点的权限,否则一个都不输出了
                if (parenTrees.Count > 0)
                {
                    foreach (var parentTree in parenTrees)
                    {
                        sb.Append("{"id":"" + parentTree.id + "","text":"" + parentTree.text + "","iconCls":"" + parentTree.iconCls + "","children":[");
                        sb.Append(GetChildString(treeList, parentTree.id));
                    }
                    sb.Remove(sb.Length - 1, 1);
                    sb.Append("]");
                }
                else
                {
                    sb.Append("]");
                }
                return sb.ToString();
            }
    
            public string GetComboTreeString(List<ComboTree> comboTrees)
            {
                string sb = "[";
                comboTrees.ForEach(f => sb += "{"id":"" + f.id + "","text":"" + f.text + "","iconCls":"" + f.iconCls + ""},");
                sb = sb.Trim(",".ToCharArray());
                sb += "]";
                return sb;
            }
    
            private string GetChildString(List<ComboTree> treeList, string parentId)
            {
                StringBuilder sb = new StringBuilder();
                List<ComboTree> childrenTrees = treeList.Where(q => q.parentid == parentId).ToList();
                if (childrenTrees.Count > 0)
                {
                    foreach (var childrenTree in childrenTrees)
                    {
                        List<ComboTree> childrens = treeList.Where(q => q.parentid == parentId).ToList();//childrenTreedt.Select(string.Format("parentid={0}", r_list[j]["id"].ToString())));
                        if (childrens.Count > 0)
                        {
                            sb.Append("{"id":"" + childrenTree.id + "","text":"" + childrenTree.text + "","iconCls":"" + childrenTree.iconCls + "","children":[");
                            sb.Append(GetChildString(treeList, childrenTree.id));
                        }
                        else
                        {
                            sb.Append("{"id":"" + childrenTree.id + "","text":"" + childrenTree.text + "","iconCls":"" + childrenTree.iconCls + "","attributes":{"url":"" + childrenTree.attributes + ""}},");
                        }
                    }
                    sb.Remove(sb.Length - 1, 1);
                    sb.Append("]},");
                }
                else  //根节点下没有子节点
                {
                    sb.Append("]},");  //跟上面if条件之外的字符串拼上
                }
                return sb.ToString();
            }
        }

    3.MVC调用

    public ActionResult GetTree()
    {
        List<ComboTree> comboTrees = new List<ComboTree>();
        var list = new List<entity>();//获取列表数据
        list.ForEach(f => comboTrees.Add(new ComboTree() { id = f.Id, text = f.Name, parentid = f.ParentId }));
        string treeString = new ComboTree().GetTreeString(comboTrees);
        return Content(treeString);
    }

    二、前端运用

    HTML

    <label class="form_label">
        部门:
    </label>
    <input class="easyui-combotree" id="treeParentId" name="treeParentId" data-options="url: '/Home/GetTree',onLoadSuccess:onLoadSuccess,onBeforeSelect:onBeforeSelect,onSelect:onSelect,lines:true" style=" 200px; height: 22px;" />

    脚本

     function onLoadSuccess(node, data) {
            if (data && data.length>0) {
                $("#treeParentId").combotree('setValue', data[0].id);
            }
        }

    function onSelect(record) {
      console.log(record);
      var id = record.id;
      var text = record.text;
    }

     PS: 当远程数据加载成功时触发onLoadSuccess

    ZeroArr为过滤数组,包含相同的id选项不能选中.

        function onBeforeSelect(node) {
            var isZero = false;
            ZeroArr.forEach(function (value, index) {
                //console.log(node.id + "======" + ZeroArr[index].Id);
                if (node.id === ZeroArr[index].Id) {
                    isZero = true;
                    return false;
                }
            });
            if (isZero) {
                $.msg_show("提示", "请选择下级节点");
                return false;
            }
        }

     PS: 在请求加载数据之前触发onBeforeLoad,返回 false 则取消加载动作

    相关说明

    combobox和combotree是combo的扩展,相关中文教程:

    http://www.jeasyui.net/plugins/168.html  combo 

    http://www.jeasyui.net/plugins/169.html  comboBox

    http://www.jeasyui.net/plugins/170.html   comboTree

  • 相关阅读:
    MySQL数据库的常用命令
    函数返回 局部变量问题
    几种网络I/O模型
    socket的select模型【摘】
    Linux Bash Shell入门教程【转载】
    Shell学习【转】
    unicode 2 utf8 [转]
    linux下多线程的创建与等待详解 【转载】
    运算(93&-8)的结果
    一道腾讯的面试题,关于a和&a
  • 原文地址:https://www.cnblogs.com/xcsn/p/8795392.html
Copyright © 2011-2022 走看看