ext3.2 右击动态添加node的treepanel

var mainNode;

var fileListTreeRoot = new Ext.tree.AsyncTreeNode({
    id: '-1',
    text:'主目录',
    loader: new Ext.tree.TreeLoader({
        url: '../../Data/FlawMould/FileListTree.aspx',
        listeners: {
            'beforeload': function (treeloader, node) {
                treeloader.baseParams = {
                    id: node.id,
                    value: node.attributes.value,
                    parentCode: node.attributes.parentCode,
                    text: node.attributes.text,
                    method: 'POST'
                };
            }
        }
    })
});


//右键菜单
var contextMenu1 = new Ext.menu.Menu({
    items: [
        { text: '新建单位', handler: add_node },
        { text: '查看单位', handler: show_node },
        { text: '删除单位', handler: del_node }
    ]
});

 

//图标资料展示树
var fileListTree = new Ext.tree.TreePanel({

    enableDD: true,
    animate: true,
    useArrows: true,
    root: fileListTreeRoot,
    rootVisible: true,
    border: false,
    lines: true,
    containerScroll: true,
    listeners:
    {

  //节点单击事件监听
        "click": function (node, event) {
            alert();
        },
        "contextmenu": function (node, event) {
   mainNode = node;
            if (node.getDepth() == 0) {
    //根据需要设置右击菜单显示项
                contextMenu1.items.items[0].show();
                contextMenu1.items.items[1].hide();
                contextMenu1.items.items[2].hide();

            } else {
                
            }
            contextMenu1.showAt(event.getXY(node));
        }
    }//listerns over
});

//把treePanel放到panel里

var treePanel =new Ext.Panel({
    //自动收缩按钮
    //添加split,设置最大、最小范围
    split: true,
    minSize: 100,
    maxSize: 300,
    region: 'east',
    //collapsible: true,
    border: false,
    width: 200,
    layout: "accordion",
    //extraCls: "roomtypegridbbar",
    //添加动画效果
    layoutConfig: {
        animate: true
    },
    region: "east",
    //
    items: [{
        title: "<b>文件目录</b>",
        autoScroll: true,
        items: [fileListTree]
    }]
});

//右击添加新目录

add_node = function () {
    //添加节点panel
    var NodePanel = new Ext.form.FormPanel({
        width: 410,
        height: 110,
        plain: true,
        layout: "form",
        defaultType: "textfield",
        labelWidth: 90,
        fileUpload: true,
        baseCls: "x-plain",
        //锚点布局
        defaults: { anchor: "95%", msgTarget: "side" },
        buttonAlign: "center",
        bodyStyle: "padding:0 0 0 0",
        items: [{
            name: "folderName",
            fieldLabel: "文件夹名称",
            allowBlank: false,
            blankText: "文件夹名称不允许为空"
        }]
    });

    //添加节点窗口
    var nodePanelWin = new Ext.Window({
        title: "文件夹信息",
        width: 450,
        height: 130,
        //autoScroll:true,
        plain: true,
        //iconCls:"addicon",
        //不可以随意改变大小
        resizable: false,
        //是否可以拖动
        //draggable:false,
        defaultType: "textfield",
        labelWidth: 100,
        collapsible: true, //允许缩放条
        closeAction: 'hide',
        closable: true,
        plain: true,
        //弹出模态窗体
        modal: 'true',
        buttonAlign: "center",
        bodyStyle: "padding:10px 0 0 15px",
        items: [NodePanel],
        listeners: {
            "show": function () {
                //当window show事件发生时清空一下表单
                NodePanel.getForm().reset();
            }
        },
        buttons: [{
            text: "保存信息",
            minWidth: 70,
            handler: function () {
                //右击的文件夹的id
                var currentID = mainNode;
                if (NodePanel.getForm().isValid()) {
                    //弹出效果
                    Ext.MessageBox.show
                                    (
                                        {
                                            msg: '正在保存,请稍等...',
                                            progressText: 'Saving...',
                                            width: 300,
                                            wait: true,
                                            waitConfig: { interval: 200 },
                                            icon: 'download',
                                            animEl: 'saving'
                                        }
                                    );
                    //                                    setTimeout(function(){Ext.MessageBox.hide();
                    //                                    }, 1000);
                    NodePanel.form.submit({
                        url: "../../Data/FlawMould/FolderTreeEdit/AddFolder.aspx?currentID=" + mainNode.attributes['id'],                        
                        method: "POST",
                        success: function (form, action) {
                            //成功后
                            var flag = action.result.success;
                            if(flag=="true")
                            {
                                Ext.MessageBox.alert("恭喜","信息保存成功!");
                                nodePanelWin.hide();
                                fileListTreeRoot.reload();
                                fileListTree.expandAll();
                            }
                            else
                            {
                                var message=action.result.error
                                Ext.MessageBox.alert("提示",message);
                            }
                        },
                        failure: function (form, action) {
                            var flag = action.result.success;
                            alert(flag);
                            Ext.MessageBox.alert("提示!", "保存信息失败!");
                        }
                    });
                }
            }
        }, {
            text: "重置",
            minWidth: 70,
            qtip: "重置数据",
            handler: function () {
                NodePanel.getForm().reset();
            }
        }, {
            text: "取 消",
            minWidth: 70,
            handler: function () {
                nodePanelWin.hide();
            }
        }]

    }); //nodePanelWin over

    nodePanelWin.show();
}

---------aspx的后台代码----------

public partial class Data_FlawMould_FolderTree : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        getTree();
    }

    class TreeType
    {
        public string id;
        public string parentId;
        public string text;
        public string value;
        public string iconCls;
        public string href;
        public bool leaf;
        public int number;
        public string type;
        public string parentCode;
        public string icon;
    }

    public void getTree()
    {
        string id = Request.Form["id"];

        flawMould.BLL.T_FolderTree fBll= new flawMould.BLL.T_FolderTree();
        List<flawMould.Model.T_FolderTree> fModelList = fBll.GetModelList("parent='"+ id +"'");
       // List<TreeType> treeList = new List<TreeType>();

        DTreeJSONHelper json = new DTreeJSONHelper();
        json.success = true;

        TreeType t = new TreeType();

        for (int i = 0; i < fModelList.Count; i++)
        {
            t.id = fModelList[i].id;
            t.parentId = fModelList[i].parent;
            t.text = fModelList[i].name;
            t.value = fBll.GetModelList("parent='" + t.id + "'").Count > 0 ? "0" : "1";

            //treeList.Add(t);

            json.AddItem("id", t.id);
            json.AddItem("parentId", t.parentId);
            json.AddItem("text", t.text);
            json.AddItem("leaf", t.value);
            json.ItemOk();
        }

        string jsonStr = Newtonsoft.Json.JsonConvert.SerializeObject(treeList);

        Response.Write( json.ToString() );
    }
   
}

posted @ 2017-12-06 17:06  人丑没钱嘴不甜  阅读(321)  评论(0编辑  收藏  举报