Tree的增删改查(右键弹出菜单)

Tree的增删改查(右键弹出菜单)

不多说,直接上源码:

1、树的代码

<ul id="t1"></ul>

2、右键菜单代码

<div id="mm" class="easyui-menu" style="width:150px;">
        <div data-options="iconCls:'icon-add'" onclick="append()">添 加</div>
        <div data-options="iconCls:'icon-edit'" onclick="editor()">修 改</div>
        <div data-options="iconCls:'icon-remove'" onclick="removetree()">删 除</div>
        <div class="menu-sep"></div> 
        <div  data-options="iconCls:'icon-undo'" onclick="exit()">退出</div>
    </div>

3、添加和编辑的弹出框

<div id="info" class="easyui-dialog" style="width:400px;height: 180px;" closed=true>
        <form id="myform" method="post">
            <input type="hidden" name="id" value="">
            <table style="margin: auto;" cellspacing="10">
                <tr>
                    <td>名称</td>
                    <td><input class="easyui-textbox" name="name" value="" data-options="required:true"></td>
                </tr>
                <tr>
                    <td>备注:</td>
                    <td><input class="easyui-textbox" name="mark" value=""></td>
                </tr>
            </table>
            <div style="text-align: center; bottom: 15px; margin-top: 20px;">
                <a id="savebtn" class="easyui-linkbutton"
                    data-options="iconCls:'icon-save'" style="width: 20%;">保存</a> <a
                    id="cancelbtn" class="easyui-linkbutton"
                    data-options="iconCls:'icon-cancel'" style="width: 20%;">取消</a>
            </div>
        </form>
    </div>

4、js部分

var flag;//判断是添加还是修改的标记
    $(function(){
        $('#t1').tree({
            //发送异步ajax请求,还会携带id的参数
            url:'',//后台地址
            dnd:true,
            onDrop:function(target ,source, point){
                var tar=$('#t1').tree('getNode' , target);
                $.ajax({
                    type:'post',
                    url:'',
                    data:{
                        targetId:tar.id,
                        sourceId:source.id,
                        point:point
                    },
                    dataType:'json',
                    cache:false,
                    success:function(result){
                        if(result=='1'){
                            $.messager.show({
                                title:'提示信息',
                                msg:'操作成功!'
                            });
                        }else{
                            $.messager.show({ 
                                title : 'Error',
                                msg : result.msg
                            });
                        }
                    }
                });
            },
            //右键弹出菜单功能
            onContextMenu:function(e,node){
                //禁止浏览器的窗口打开
                e.preventDefault();
                //右键选中节点
                $(this).tree('select',node.target);
                $('#mm').menu('show',{
                    left:e.pageX,
                    top:e.pageY
                });
            }
        });
        //保存按钮
        $('#savebtn').click(function(){
            if(flag=='add'){
                //1做前台更新
                //(1)获取所选中的节点,也就是父节点
                var node=$('#t1').tree('getSelected'); 
                //2后台同步更新
                $.ajax({
                    type:'post',
                    url:'',
                    cache:false,
                    data:{
                        parentId:node.id,
                        name:$('#myform').find('input[name=name]').val(),
                        url:$('#myform').find('input[name=mark]').val()
                    },
                    dataType:'json',
                    success:function(result){
                        if(result=='1'){
                            //重新加载
                            var parent=$('#t1').tree('getParent',node.target);
                            $('#t1').tree('reload',parent.target);

                            $.messager.show({
                                title:'提示信息',
                                msg:'添加成功!'
                            });
                        }else{
                            $.messager.show({ 
                                title : 'Error',
                                msg : result.msg
                            });
                        }
                    }
                });
                //3关闭dialog
                $('#info').dialog('close');
                $('#myform').form('clear');
            }else{
                $.ajax({
                    type:'post',
                    url:'',
                    cache:false,
                    data:{
                        id:$('#myform').find('input[name=id]').val(),
                        name:$('#myform').find('input[name=name]').val(),
                        url:$('#myform').find('input[name=mark]').val()//注意此时为备注字段
                    },
                    dataType:'json',
                    success:function(result){
                        if(result=='1'){
                            //刷新节点,刷新选中节点的父亲
                            var node=$('#t1').tree('getSelected');
                            var parent=$('#t1').tree('getParent',node.target);
                            $('#t1').tree('reload',parent.target);
                            //提示信息
                            $.messager.show({
                                title:'提示信息',
                                msg:'修改成功!'
                            });
                        }else{
                            $.messager.show({ 
                                title : 'Error',
                                msg : result.msg
                            });
                        }
                    }
                });
            }
            //3关闭dialog
            $('#info').dialog('close');
            $('#myform').form('clear');

        });
        //取消按钮
        $('#cancelbtn').click(function(){
            $('#info').dialog('close');
            $('#myform').form('clear');
        });
    });

然后是点击菜单时调用的方法:

function append(){
        flag='add';//添加标记
$('#info').dialog('open').dialog('setTitle','增加');
        $('#myform').form('clear');
    }

    function editor(){
        flag='edit';
        //清空表单数据
        $('#myform').form('clear');
        //清空表单数据库,重新填充选中的节点里的id,name,url属性
        var node=$('#t1').tree('getSelected');
        $('#myform').form('load',{
            id:node.id,
            name:node.text,
            mark:node.attributes.url
        });
        //打开dialog
    $('#info').dialog('open').dialog('setTitle','修改');
    }

    function removetree(){
        //前台删除
        var node=$('#t1').tree('getSelected');
        $('#t1').tree('remove',node.target);
        //后台删除
    $.post('',{id:node.id},function(result){
            //给出提示信息
            if(result=='1'){
                $.messager.show({
                    title:'提示信息',
                    msg:'删除成功!'
                });
            }else{
                $.messager.show({ // show error message
                    title : 'Error',
                    msg : result.msg
                });
            }
        });
    }
    //退出菜单
    function exit(){
        $('#mm').menu('hide');
    }

运行结果如下:这里写图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在ElementUI的Tree组件中添加右键弹出菜单的功能,可以通过以下步骤实现: 1. 首先,在Tree组件上绑定一个右键菜单的事件,可以使用ElementUI提供的@contextmenu指令。例如: ``` <el-tree :data="treeData" @contextmenu="handleContextMenu" ></el-tree> ``` 2. 在Vue组件的methods中定义handleContextMenu方法,用于处理右键菜单的显示和隐藏,并获取右键菜单的位置。例如: ``` methods: { handleContextMenu(event, nodeData) { event.preventDefault() // 阻止默认的右键菜单事件 // 获取右键菜单的位置 const { clientX, clientY } = event // 显示右键菜单,并设置位置 this.$refs.contextmenu.showMenu(clientX, clientY) } } ``` 3. 在Vue组件中添加一个右键菜单的组件,用于显示具体的菜单选项。例如: ``` <template> <el-context-menu ref="contextmenu"> <el-menu-item @click="handleOption1">菜单选项1</el-menu-item> <el-menu-item @click="handleOption2">菜单选项2</el-menu-item> <el-menu-item @click="handleOption3">菜单选项3</el-menu-item> </el-context-menu> </template> ``` 4. 在Vue组件的methods中定义具体菜单选项的处理方法。例如: ``` methods: { handleOption1() { // 处理菜单选项1的逻辑 }, handleOption2() { // 处理菜单选项2的逻辑 }, handleOption3() { // 处理菜单选项3的逻辑 } } ``` 通过以上步骤,就可以实现在ElementUI的Tree组件上添加右键弹出菜单的功能。当用户右键点击节点时,会触发handleContextMenu方法,该方法会显示右键菜单并获取位置,然后根据菜单选项的点击事件进行相应的处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值