easyui中combotree只能选子选项,父级不被选中

前言

前几天面试遇到一个需求(easyui中combotree只能选子选项,父级不被选中),回来特意整理下,大概的思想是如果该tree的节点被选中是判定一下是否有子节点,如果没有就说明是最终节点了,步骤如下:

1. 原来计划是看json数据的话有个children字段标识,后来用google的开发工具发现没有,但是哥们发现了一个state字段,即父级的话会自动给一个state字段,为closed或者open值,但是最终子节点没有这个字段,如下图:

a. 选个子节点瞅瞅:

b. 选个父节点瞅瞅:

2. 找到合适的事件监听,哥们在easyui的tree的api找到了这个:

onBeforeSelect:参数是node,解释:节点被选中之前触发,返回false取消选择动作(取消动作,哥们看到这就亮了,莫名的鸡冻

来灵感了吧,淡定淡定,开整。

代码如下(代码是easyui 1.3.2的demo里的文件路径都一样,不同的是哥们我把json数据写到js里了,懒得发布测试,这样直接可以看效果呢):

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>ComboTree</title>
    <link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
    <link rel="stylesheet" type="text/css" href="../../themes/icon.css">
    <script type="text/javascript" src="../../jquery-1.8.0.min.js"></script>
    <script type="text/javascript" src="../../jquery.easyui.min.js"></script>
    <script type="text/javascript" >
        $(function(){
            $('#cc').combotree({
                onBeforeSelect:function(node){
                    alert(node.state);
                    if(node.state){
                        $("#cc").tree("unselect");
                    }
                },
                data:[{
                    "id":1,
                    "text":"My Documents",
                    "children":[{
                        "id":11,
                        "text":"Photos",
                        "state":"closed",
                        "children":[{
                            "id":111,
                            "text":"Friend"
                        },{
                            "id":112,
                            "text":"Wife"
                        },{
                            "id":113,
                            "text":"Company"
                        }]
                    },{
                        "id":12,
                        "text":"Program Files",
                        "children":[{
                            "id":121,
                            "text":"Intel"
                        },{
                            "id":122,
                            "text":"Java",
                            "attributes":{
                                "p1":"Custom Attribute1",
                                "p2":"Custom Attribute2"
                            }
                        },{
                            "id":123,
                            "text":"Microsoft Office"
                        },{
                            "id":124,
                            "text":"Games",
                            "checked":true
                        }]
                    },{
                        "id":13,
                        "text":"index.html"
                    },{
                        "id":14,
                        "text":"about.html"
                    },{
                        "id":15,
                        "text":"welcome.html"
                    }]
                }]
            });
        });
    </script>
</head>
<body>
    <input id="cc" style="width:200px;">
</body>
</html>

有机会的话的和他探讨一番,收工...........(记2014年3月26日面试)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
easyui-combotree是一种基于EasyUI框架的组件,用于在网页创建一个带有树状结构的下拉菜单。它可以用于择树状结构的某个节点。通过设置相关参数,可以实现默认选中多项、择节点以及获取节点信息等功能。你可以使用HTML代码来创建一个easyui-combotree,如下所示: ``` <input id="ProjectTree" class="easyui-combotree" style="width: 300px;" /> ``` 在后端代码,你可以通过获取区域节点信息的方式来提供easyui-combotree所需的数据。例如,在后端代码可以使用以下方法来获取三级区域菜单的数据: ```csharp public ActionResult GetThreeRegionTree(string parentRegionCode = "") { List<TreeRegionOne> treeOneList = new List<TreeRegionOne>(); var treeListModel = Sys_RegionServer.GetRegionChildList(parentRegionCode); foreach (var oneTreeItem in treeListModel) { TreeRegionOne treeOne = new TreeRegionOne(); treeOne.id = Convert.ToInt32(oneTreeItem.Value);//下拉框value值 treeOne.text = oneTreeItem.Text;//显示文本 treeOne.state = "open";//显示的是文件夹样式还是文档样式,也就是是否最后一级 //是否有子节点 var childList = Sys_RegionServer.GetRegionChildList(oneTreeItem.Value); if (childList != null && childList.Count() > 0) { treeOne.state = "closed"; } treeOneList.Add(treeOne); } return Json(treeOneList); } ``` 上述代码,通过遍历区域节点信息,构建一个TreeRegionOne对象列表,包含了节点的id、显示文本和是否有子节点等信息。最后,通过Json方法返回这个列表作为easyui-combotree的数据源。这样,easyui-combotree就会显示出相应的树结构,并且可以根据你的需求进行择和操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [easyui combotree(树形下拉框)使用收获总结](https://blog.csdn.net/weixin_44311648/article/details/118654862)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [easyui学习记录:combotree的使用](https://blog.csdn.net/weixin_30319153/article/details/97892869)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值