ext前台关于树和表格数据之间动态转换

突发奇想想弄一个前台的ext5.1的表格和tree之间的动态转换,具体效果是给树增加或者删除节点之后,表格里面的数据也会相应改变,如果修改表格里面的数据也会动态将树的结构作相应变化。

首先先把界面设计好按照步骤一步一步来:

etx树的的构造:

1.基础属性配置:

Ext.create('Ext.tree.Panel', {
    width: 200,
    border : false,
    name : 'mytreepanel',
    store: store,
    rootVisible: true,
    listeners : {
        'itemclick' : function(view, record, items, index, e) {
//单击树的节点出发 
        },
        'itemcontextmenu' : function(menutree, record, items, index, e) {  //右键树的节点出发 
                e.preventDefault();  
                e.stopEvent();   //撤销页面的右键功能,在下面会将自己的页面右键功能放入
                onCtxMenuHandler(e,record); //右键菜单具体逻辑
                }
      }
});

上面配置了ext的树的基本属性,接下来就需要给树加上相应的监听事件,本人是加上了右键弹出菜单,然后将功能写在里面:该方法onCtxMenuHandler(e,record);

function onCtxMenuHandler(e,record){//发送被单击的节点与时间对戏那个给时间处理程序
    var obj = record;  
            while (!obj.parentNode.isRoot()) {  
                obj = obj.parentNode;  
                }  
                var rootId = obj.getId(); 
                console.log(rootId);
                var nodemenu = new Ext.me
nu.Menu({ //右键弹出的菜单 
                        items : [{  
                            text : "添加文件夹",  
                            // icon:'images/add.gif',  
                            // iconCls:'leaf',  
                            handler : function() {  
                                if (record.get('leaf') == false) {  
                                    Ext.MessageBox.prompt("标题", "請輸入",  
                                            function(btn, text) {  
                                                if (btn == "ok") { 
                                                var id = new Date().getTime(); 
                                                    record.appendChild({  
                                                                text : text,  
                                                                id : id,  
                                                                expanded : true  
                                                            });  
                                                     var grid = DSYGrid.getGrid('myRightGrid');//获取表格对象
                                                var data = [{ID : id , NAME : text , PARENTID : record.data.id}] //这里传入自己想插入表格的数据
                                                grid.getStore().loadData(data,true); //往自己的表格里面插入数据
                                                }  
                                            }, this, false, // 表示文本框为多行文本框  
                                            "新添加文件夹");  //默认值
                                }  
  
                            },  
                            listeners : {  
                                render : function(com) {  
                                    if(record.get('leaf') == true)  
                                    com.setVisible(false);   //设置隐藏
                                }  
                            }  
                        }, {  
                            text : "添加子节点",  
                            handler : function() {  
                                Ext.MessageBox.prompt("标题", "請輸入",  
                                        function(btn, text) {  
                                            if (btn == "ok") {  
                                            var id = new Date().getTime();
                                                record.appendChild({  
                                                            text : text,  
                                                            id :  id,
                                                            expanded : true,  
                                                            leaf : true  
                                                        });  
                                                var grid = DSYGrid.getGrid('myRightGrid');
                                                var data = [{ID : id , NAME : text , PARENTID : record.data.id}]
                                                grid.getStore().loadData(data,true);
                                            }  
                                        }, this, false, // 表示文本框为多行文本框  
                                        "新添加子节点");  
                            },  
                        listeners : {  
                            render : function(com) {  
                                if(record.get('leaf') == true)  
                                com.setVisible(false);  
                            }  
                        }  
                        }, {  
                            text : "编辑",  
                            // icon:'images/leaf.gif',  
                            // iconCls:'leaf',  
                            handler : function() {  
                                Ext.MessageBox.prompt("标题", "請輸入",  
                                        function(btn, text) {  
                                            if (btn == "ok") {  
                                                record.data.text= text;
                                                 //修改表格内容
                                var store = DSYGrid.getGrid('myRightGrid').getStore();  
                                var myitems =  store.getData().items;
                                for( var i = 0 ; i < myitems.length ; i++){
                                if( myitems[i].data.ID == record.data.id ){
                                myitems[i].set("NAME","jj");
                                }
                                }  
                                            }  
                                        }, this, false, // 表示文本框为多行文本框  
                                        record.data.text);  
                            }  
                        }, {  
                            text : "删除",  
                            // icon:'images/delete.gif',  
                            // iconCls:'leaf',  
                            handler : function() {  
                                //修改表格内容
                                var store = DSYGrid.getGrid('myRightGrid').getStore();  
                                var myitems =  store.getData().items;
                                for( var i = 0 ; i < myitems.length ; i++){
                                if( myitems[i].data.ID == record.data.id ){
                                store.remove(myitems[i]); //删除表格里面的对应的行 这里功能只能简单删除叶子结点的功能,如果删除文件夹的话还要删除下面的叶子结点,在此基础上加循环就行了。
                                }
                                }
                        record.remove();
                            }  
                        }]  
                    });  
                    nodemenu.showAt(e.getXY()); //弹出菜单的位置
    }

2.表格的创建

相信创建表格这个就不用多说了吧,创建之后,上面的有些数据就是取自表格里面的。

猜你喜欢

转载自blog.csdn.net/m0_37247144/article/details/78072095