JQueryEasyUI实现两个树之间的数据移动

如下图:

<fieldset>
                        <table border="0" >
                        <td>选择外包机具:
                        <fieldset>
                        <ul id="tt" class="easyui-tree" url="../../json/treegrid.json" checkbox="true" style="width:300px;height:280px" >

                        </ul>
                        </fieldset>
                        </td>
                        <td>
                            <a href="#" onclick="toRight()" class="easyui-linkbutton" data-options="iconCls:‘icon-redo‘" ></a><br/>
                            <a href="#" onclick="toLeft()" class="easyui-linkbutton" data-options="iconCls:‘icon-back‘"></a>
                        </td>
                        <td>
                        <fieldset>
                        <ul id="tt1" class="easyui-tree" url="" checkbox="true" style="width:300px;height:280px" >

                        </ul>
                        </fieldset>
                        </td>
                    </table>
                    </td>
                    </fieldset>
<script type="text/javascript">
    function toRight(){
        moveData(true);
    }
    function toLeft(){
        moveData(false);
    }
    function moveData(FLAG) {//将source中的数据移动到target中
        var source = $(FLAG ? ‘#tt‘ : ‘#tt1‘), target = $(FLAG ? ‘#tt1‘ : ‘#tt‘);
        var checked = source.tree(‘getChecked‘);//获取选中的数据
        if (checked.length == 0) {
            $.messager.alert(‘消息框‘,‘请选择机具!‘,‘warning‘);
            return false;
        }
        for (var i = checked.length - 1; i >= 0; i--) {
            if (source.tree(‘isLeaf‘, checked[i].target)) {
                //移动叶子节点到target树中,其父节点无需移动,通过getParent方法自动建立
                moveNode(source, target, checked[i]);
            }
        }
        //移除节点
        for (var i = checked.length - 1; i >= 0; i--) {
            source.tree(‘remove‘, checked[i].target);
        }
    }
    function moveNode(source, target, node) { //建立节点的路径
        var pNode, pNodeData = [], pid;
        pNode = source.tree(‘getParent‘, node.target); //收集父节点
        pid = pNode.id;
        do {
            if (pNodeData.length > 0)
                pNodeData[pNodeData.length - 1].pid = pNode.id; //更新上一个父节点的父节点id
            pNodeData.push({ text: pNode.text, id: pNode.id });
        }
        while (pNode = source.tree(‘getParent‘, pNode.target));
        //从根节点建立路径
        for (var i = pNodeData.length - 1; i >= 0; i--) {
            if (!target.tree(‘find‘, pNodeData[i].id)) {
                target.tree(‘append‘, {
                    parent: pNodeData[i].pid ? target.tree(‘find‘, pNodeData[i].pid).target : null,
                    data: {
                        text: pNodeData[i].text,
                        id: pNodeData[i].id
                    }
                });
            }
        }
        target.tree(‘append‘, {
            parent: target.tree(‘find‘, pid).target,
            data: {
                text: node.text,
                id: node.id
            }
        });
    }
</script>
时间: 2024-10-13 11:03:27

JQueryEasyUI实现两个树之间的数据移动的相关文章

两个Activity之间共享数据、互相访问的另一种方式的实现

本帖最后由 勇敢的心_ 于 2010-9-29 11:51 编辑本人从windows编程转过来学习Android开发,一直在想如果两个Activity之间能够像C#或delphi中的Form一样,可以直接访问其成员(字符.数值.成员对象等),并能调用其公开的方法,那应该比用Intent来传递数据直接方便的多,于是偿试了如下办法,测试基本没有问题,发出来大家讨论一下.本人学习android不久,幼稚的地方希望大家不要见笑原理:假设有两个Activity:ActivityMain 和 Activit

Android中在两个Activity之间进行数据传递

首先声明,此篇文章是我原先的CSDN上面的博客,由于种种原因,不想再使用csdn博客,于是就将其文章搬至现在的cnblog. 大家好,今天我终于开通了自己的博客,很开心能和大家共同分享我的学习经验,希望我们可以共同进步哦,废话不多说了,看一下我今天学习android遇到的一些问题和解决办法吧 首先先把我使用的eclipse的版本贴出来:adt-bundle-windows-x86-20130917 这是一个集成的版本,不需要配置SDK和ADT,但是需要手动配置JDK哦! 其实,不同版本的ecli

HTML5中window.postMessage,在两个页面之间的数据传递

HTML5中window.postMessage,在两个页面之间的数据传递 2015年11月3日 8536次浏览 关于postMessage window.postMessage虽然说是html5的功能,但是支持IE8+,假如你的网站不需要支持IE6和IE7,那么可以使用window.postMessage.关于window.postMessage,很多朋友说他可以支持跨域,不错,window.postMessage是客户端和客户端直接的数据传递,既可以跨域传递,也可以同域传递. 应用场景 我只

数据库中两张表之间的数据同步实现思路(增加、删除、更新)Mysql、sqlserver

分别创建增加.删除.更新的触发器(Trigger)来达到两张表之间数据同步的目的. 1:数据同步增加:如有两张表--A表和B表,创建触发器使当A表插入数据后B表也同步插入数据.其中B表插入数据的字段需要同A表中的字段相对应. CREATE TRIGGER 触发器名称 ON A表 AFTER INSERT AS BEGIN INSERT INTO B表(B表字段1,B表字段2,B表字段3) SELECT A表字段1,A表字段2,A表字段3 FROM INSERTED END 2.数据同步删除:如有

如何在两个线程之间共享数据

总 1,如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,卖票系统就可以这么做. 2,如果每个线程执行的代码不同,这时候需要用不同的Runnable对象,例如,设计4个线程.其中两个线程每次对j增加1,另外两个线程对j每次减1,银行存取款 每个线程执行的代码相同,可以使用同一个Runnable对象 public class RunnalbleTest2 implements Runnable { private int threadC

两个activity之间的数据传递

1.清单文件第二个activity<activity android:name="com.example.twodatapass.ResultActivity" android:label="@string/app_name" > </activity>2.程序文件1)激活方String name = et_name.getText().toString().trim();if(TextUtils.isEmpty(name)){ Toast.

Android两个Activity之间的数据交换

1. 不带数据 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); next=(Button)findViewById(R.id.next); next.setOnClickListener(new Button.OnClickListener() { @Override

实际建立DB-LINK,两个数据库之间的数据公用

创建DB-LINKcreate public database link dblink_名字 connect to 账户名字 identified by 账户密码 using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 数据库所在地址)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = 目标数据的名字) ) )'; 建立完数据库取数据: CREATE 表名 AS

c#静态类在两个winform之间传递数据

public class ZTCD { public static string ZJZ = ""; public static string jg = ""; public static int CD = 0; public static string yzm = string.Empty; } //改变类中参数的值,可在两个winform窗体间传递 Form2 frm1 = new Form2(); frm1.Show(); frm1.tsslName.Text