ext中将tree中的数据拖拽到grid中,动态生成列

今天写了好久,公司不能上网,回家后在网上查了下,效果终于出来了,特意写出来分享一下 

<script type="text/javascript">
    Ext.onReady(function() {
        var cmItems = [];
        var cmConfig = {};
        var cm = new Ext.grid.ColumnModel([
            { header: '编号', dataIndex: 'id' },
            { header: '名称', dataIndex: 'name' },
            { header: '描述', dataIndex: 'descn' }
        ])

        var data = [
        //            [1, 'name1', 'descn1'],
        //            [2, 'name2', 'descn2'],
        //            [3, 'name3', 'descn3'],
        //            [4, 'name4', 'descn4'],
        //            [5, 'name5', 'descn5']
        ]

        var store = new Ext.data.Store({
            proxy: new Ext.data.MemoryProxy(data),
            reader: new Ext.data.ArrayReader({}, [
                { name: 'id' },
                { name: 'name' },
                { name: 'descn' }
            ])
        })

        store.load();

        var grid = new Ext.grid.GridPanel({
            height: 200,
            width: 320,
            hideHeaders: true,
            store: store,
            cm: cm,
            enableDragDrop: true
        })

        var root = new Ext.tree.TreeNode({
            id: 'root',
            text: '数据一'
        });

        var c1 = new Ext.tree.TreeNode({
            id: 'id',
            text: '1'
        })

        var c2 = new Ext.tree.TreeNode({
            id: 'name',
            text: 'name1'
        })

        var c3 = new Ext.tree.TreeNode({
            id: 'descn',
            text: 'descn1'
        })

        root.appendChild(c1);
        root.appendChild(c2);
        root.appendChild(c3);

        var tree = new Ext.tree.TreePanel({
            animate: true,
            enableDD: true,
            ddGroup: 'GridDD',
            enableDrop: true,
            renderTo: 'tree',
            root: root,
            width: 300
        })

        var gridTemp = new Ext.Panel({
            layout: 'fit',
            items: grid,
            height: 200,
            width: 320,
            renderTo: 'gridTemp'
        });

        var ddrow = new Ext.dd.DropTarget(grid.container, {
            ddGroup: 'GridDD',
            copy: false,
            notifyDrop: function(dd, e, data) {
                var selectedNode = tree.getSelectionModel().getSelectedNode();
                var tmpid = selectedNode.attributes.id;
                var tmptext = selectedNode.attributes.text;

                if (tmpid == "root") {
                    alert("根节点不能移动");
                    return;
                }
                if (tmpid == "id") {
                    cmConfig = { header: "编号", dataIndex: "id" }
                }
                if (tmpid == "name") {
                    cmConfig = { header: "名称", dataIndex: "name" }
                }
                if (tmpid == "descn") {
                    cmConfig = { header: "描述", dataIndex: "descn" }
                }
                cmItems.push(cmConfig);

                gridTemp.removeAll();

                var Tdata = [[tmptext]
                        ]

                var Tstore = new Ext.data.Store({
                proxy: new Ext.data.MemoryProxy(Tdata),
                    reader: new Ext.data.ArrayReader({}, [
                                { name: 'id' },
                                { name: 'name' },
                                { name: 'descn' }
                            ])
                })

                Tstore.load();
                var Tcm = new Ext.grid.ColumnModel(cmItems);
                var Tgrid = new Ext.grid.GridPanel({
                    height: 400,
                    width: 300,
                    store: Tstore,
                    cm: Tcm,
                    enableDragDrop: true
                })

                gridTemp.insert(0, Tgrid);
                Tgrid.doLayout();
                gridTemp.doLayout();
            }
        })

    })
</script>
<body>
    <form id="form1" runat="server">
    <div id="tree">
    </div>
    <div id="gridTemp">
    </div>
    </form>
</body>
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值