jQuery MiniUI

 找回密码
 立即注册
楼主: 沐熙111
打印 上一主题 下一主题

mini-tree 如何将选中的节点添加到另一个空树 [复制链接]

Rank: 2

11#
发表于 2016-8-29 15:35:47 |只看该作者
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        <script src="${ctx }/static/miniui/scripts/boot.js" type="text/javascript"></script>
        <style type="text/css">
        td{height: 30px;}
        </style>   
</head>
<body>
        <form id="form1" method="post">
        <div>
                <strong>角色管理</strong> <br>
                <hr color="#808080" style="height: 4px">
                <p>
                        <span style="color: #999999;">角色管理 &gt;</span><span> 编辑角色</span>
                </p>
                <input id="id1" type="mini-hidden">
                <table>
                        <tr>
                                <td>从下列位置选择菜单:</td>
                                <td></td>
                                <td>配置菜单:</td>
                        </tr>
                        <tr>
                                <td>
                                        <div style="border-style: solid; border-width: 2px; border-color: #D3D3D3; width: 200px; height: 300px; float: left; position: relative;"
                                                id="">
                                                <a class="mini-button" onclick="checkAll" style="width:150px;">全选</a>
                                                <!-- 菜单树  全部 -->
                                                <ul id="leftTree" class="mini-tree" url="${ctx}/leftMenu" style="width:300px;padding:5px;"
                                                                     textField="text" idField="id" parentField="pid"
                                                                    resultAsTree="false"
                                                                     checkRecursive="true"  autoCheckParent="false"
                                                                     showCheckBox="true"
                                                                     >        
                                                </ul>
                                        </div>
                                </td>
                                <td align="center">
                                        <a class="mini-button" onclick="addMenu" style="width:60px;">添加 》</a>
                                        <br><br>
                                        <a class="mini-button" onclick="deleteMenu" style="width:60px;">《删除</a>
                                <td>
                                        <div style="border-style: solid; border-width: 2px; border-color: #D3D3D3; width: 200px; height: 300px; float: left; position: relative;"
                                                id="">
                                               
                                                <!-- 菜单树   部分-->
                                                <ul id="leftTree1" class="mini-tree" style="width:300px;padding:5px;"
                                                                     textField="text" idField="id" parentField="pid"
                                                                     resultAsTree="false" autoCheckParent="true"
                                                                    checkRecursive="true"  showCheckBox="true"                                                       
                                                                    >        
                                                </ul>
                                        </div>
                                </td>
                        </tr>
                </table>
        </div>
        <hr color="#808080" style="height: 1px">
        <div style="text-align:center;padding:10px;">                  
                        <a class="mini-button" onclick="onDelete" style="width:150px;">删除</a>                     
    </div>  
</form>

</body>
<script type="text/javascript">
        mini.parse();       
        var form = new mini.Form("form1");
        var leftTree = mini.get("leftTree");
        var leftTree1=mini.get("leftTree1");
        var root =leftTree.getRootNode();
        var root1 =leftTree1.getRootNode();//获得虚拟根节点
        function addMenu(){
                   
                    alert("====addMenu");               
                    var nodes =leftTree.getCheckedNodes(true);//获取Check选中的多个节点  false不包含父节点
                    alert(nodes);
                   
                    alert("====addMenu11111");
                    leftTree1.addNodes(nodes,root1);
                    leftTree.removeNodes(nodes);
           
         }       
       
         function deleteMenu(){
                 //获取选中项删除
                 var nodes =leftTree1.getCheckedNodes(true);
                 leftTree1.removeNodes(nodes);
         }       
</script>
</html>

我这个是从后台读的数据  你找一个文本读信息应该就可以

Rank: 8Rank: 8

12#
发表于 2016-8-29 15:47:20 |只看该作者
沐熙111 发表于 2016-8-29 15:35
td{height: 30px;}
          

你是选中的又有父节点,又有子节点吧
你现在是要遵循怎样的规则来添加

如果是父节点,那么获取到选中节点会带有children字段,你可以把chlidren字段删掉,一般使用是要么只添加父节点,或只添加子节点

Rank: 2

13#
发表于 2016-8-29 15:58:52 |只看该作者
felt 发表于 2016-8-29 15:47
你是选中的又有父节点,又有子节点吧
你现在是要遵循怎样的规则来添加

如果选中了父节点下的一个子节点,那么需要将父节点和选中的子节点都添加到另一个树

Rank: 8Rank: 8

14#
发表于 2016-8-29 17:15:15 |只看该作者
沐熙111 发表于 2016-8-29 15:58
如果选中了父节点下的一个子节点,那么需要将父节点和选中的子节点都添加到另一个树 ...

var nodes = leftTree.getCheckedNodes();
        $(nodes).each(function (i, item) {
            delete item.children;
            item.expanded = false;
        })
        var items = mini.listToTree(nodes,"children", "id", "pid");
        leftTree1.addNodes(items, root1);

Rank: 2

15#
发表于 2016-9-1 11:40:57 |只看该作者
felt 发表于 2016-8-29 17:15
var nodes = leftTree.getCheckedNodes();
        $(nodes).each(function (i, item) {
            de ...

delete item.children;
右侧的树显示对了,但是左侧的树的节点也被全部删除了,操作的是一直是左树的对象,所以左树的对象会跟着变吗?

Rank: 8Rank: 8

16#
发表于 2016-9-1 12:55:51 |只看该作者
沐熙111 发表于 2016-9-1 11:40
delete item.children;
右侧的树显示对了,但是左侧的树的节点也被全部删除了,操作的是一直是左树的对 ...

是的
可以克隆一下数据再操作
var nodes = leftTree.getCheckedNodes();
var cloneNodes=mini.clone(nodes);
        $(cloneNodes).each(function (i, item) {
            delete item.children;
            item.expanded = false;
        })
        var items = mini.listToTree(cloneNodes,"children", "id", "pid");
        leftTree1.addNodes(items, root1);

Rank: 2

17#
发表于 2016-9-1 15:30:14 |只看该作者
felt 发表于 2016-9-1 12:55
是的
可以克隆一下数据再操作
var nodes = leftTree.getCheckedNodes();

ok  谢谢  

Archiver|普加软件

GMT+8, 2025-7-16 01:31 , Processed in 1.053320 second(s), 9 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部