• EXT.NET 使用总结(2) ---TreePanel(带右键菜单,节点自定义属性)


    TreePanel(带右键菜单,节点自定义属性)

    其实这个树控件也挺好用的http://www.ztree.me/v3/main.php#_zTreeInfo

    html

        <ext:Panel ID="ContentPanel" runat="server" Width="960" MinHeight="560" Height="560"  Border="false" Closable="false" Layout="BorderLayout">
                    <Items>
                        <ext:Panel ID="PanelWest" runat="server" Region="West" Title="已配置表" Width="200" Collapsible="true" Split="true"  MinWidth="175" MaxWidth="400" Layout="CardLayout" >
                            <Items>
                                <ext:TreePanel ID="IndexTableTree" RootVisible="false" runat="server" AutoScroll="true" Border="true">
                                    <Listeners>
                                        <ItemClick Fn="LinkToDefineColumn"></ItemClick>
                                        <ItemContextMenu Fn="ShowMenu" StopEvent="true" />
                                    </Listeners>
                                    <Model>
                                        <ext:Model ID="Model1" runat="server">
                                            <Fields>
                                                <ext:ModelField Name="CODE" Type="String" />
                                                <ext:ModelField Name="BASETYPE" Type="String" />
                                                <ext:ModelField Name="SAVETYPE" Type="String" />
                                                <ext:ModelField Name="parenttablecode" Type="String" />
                                            </Fields>
                                        </ext:Model>
                                    </Model>
                                    <SelectionModel>
                                        <ext:RowSelectionModel ID="RowSelectionModel1" runat="server" Mode="Single" />
                                    </SelectionModel>
                                </ext:TreePanel>
                            </Items>
                            <Listeners>
                            <Collapse Fn="colsett"></Collapse>
                            <Expand Fn="colsett"></Expand>
                            </Listeners>
                        </ext:Panel>
                        <ext:Panel ID="PanelCenter" runat="server" Region="Center" Flex="4" Layout="CardLayout">
                        
                        </ext:Panel>
                </Items>
        </ext:Panel>
        <ext:Menu ID="TreeContextMenu" runat="server">
            <Items>
                <ext:MenuItem ID="MenuItemAdd" runat="server" Text="添加从表" Handler="AddChildTable();" IconCls="diy_add">
                </ext:MenuItem>
                <ext:MenuItem ID="MenuItemAddParent" runat="server" Text="添加主表" Handler="AddParentTable();" IconCls="diy_add">
                </ext:MenuItem>
                <ext:MenuSeparator runat="server" ID="MenuSeparator1"/> 
                <ext:MenuItem ID="MenuItemEdit" runat="server" Text="编辑表属性" Handler="EDITTable();" IconCls="diy_edit">
                </ext:MenuItem>
            </Items>
        </ext:Menu>

    script

    <script type="text/javascript">
        var ShowMenu = function (view, node, item, index, e) {
            SelectNode=node;
            var menu = <%=TreeContextMenu.ClientID %>;
            var id=node.get("id");
            var parenttablecode=node.get("parenttablecode");
            idflag=id;
            if (id=="RootPublic"||id=="RootPrivate") {
                return false;
            }
            var scode=node.get("S_CODE");
            S_CODE=scode;
            if (scode!="") {
                <%=MenuItemAdd.ClientID %>.hide();
                <%=MenuItemAddParent.ClientID  %>.hide();
                if ((parenttablecode == ""||parenttablecode == null) && (scode == "0" || scode == "1")) {
                        <%=MenuItemAdd.ClientID %>.show();
                    }
            }else {
                <%=MenuItemAdd.ClientID %>.hide();
                <%=MenuItemAddParent.ClientID  %>.show();
            }
            <%=MenuSeparator1.ClientID %>.show();
            <%=MenuItemEdit.ClientID %>.show();
            menu.showAt([e.getXY()[0], e.getXY()[1] + 10]);
            e.stopEvent();
        }
    </script>

    后台绑定数据源:

            private void BuildTree()
            {
                Ext.Net.Node root = new Ext.Net.Node();
                root.Text = "Root";
                IndexTableTree.Root.Add(root);
                 List<EXTTreeNode> listALL = GetData();
                List<EXTTreeNode> list = GetData().FindAll(p=>p.pId=="");
                if (list!= null &&list.Count>0)
                {
                    foreach (var item in list)
                    {
                        Ext.Net.Node node = new Ext.Net.Node();
                        node.Text = item.name;
                        node.NodeID = item.id;
                        if (!string.IsNullOrWhiteSpace(noid))
                        {
                            string flag = "";
                            ifMyChild(item.id, listALL, noid, ref flag);
                            if (flag=="1")
                            {
                                node.Expanded = true;
                            }
                        }
                        //添加自定义属性
                        node.CustomAttributes.Add(new ConfigItem("S_CODE", item.CODE, ParameterMode.Value));
                        node.CustomAttributes.Add(new ConfigItem("BASETYPE", item.BASETYPE, ParameterMode.Value));
                        node.CustomAttributes.Add(new ConfigItem("SAVETYPE", item.SAVETYPE, ParameterMode.Value));
                        node.CustomAttributes.Add(new ConfigItem("parenttablecode", item.parenttablecode, ParameterMode.Value));
                        node.Leaf = true;
                        //加载子节点
                        GetSubNode(node, listALL);
                        if (node.Children.Count > 0)
                            node.Leaf = false;
                        root.Children.Add(node);
                    }  
                }
            }
  • 相关阅读:
    3、Semantic-UI之定义容器
    2、Semantic-UI之网格布局
    1、Semantic-UI之开发环境搭建
    PyCharm创建普通项目配置支持jinja2语法
    CentOS 7安装GitLab、汉化、配置邮件发送
    Docker swarm 实战-部署wordpress
    线程和进程
    NGINX内置变量
    iTerm2 + Oh My Zsh 打造舒适终端体验
    CentOS 7修改网卡名称
  • 原文地址:https://www.cnblogs.com/WangJinYang/p/3499103.html
Copyright © 2020-2023  润新知