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>)
{
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=="")
{
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 > )
node.Leaf = false;
root.Children.Add(node);
}
}
}

EXT.NET 使用总结(2) ---TreePanel(带右键菜单,节点自定义属性)的更多相关文章

  1. gridcontrol的列头右键菜单问题

    Dev控件GridControl设置了一个右键菜单 this.gridControl1.ContextMenu = contextMenu2; 而GridControl在运行排序的时候,即 gridv ...

  2. Win7如何自定义桌面右键菜单

    1 在注册表的HKEY_CLASSES_ROOT\DesktopBackground\Shell\位置,我们新建一个计算器,他的下面有一个项目command,然后这个command去打开计算器(通过分 ...

  3. 添加系统右键菜单项 管理员取得所有权(W)(带盾牌)

    @color 0A @title 添加系统右键菜单项 管理员取得所有权(^&W)(带盾牌) by wjshan0808 @echo off echo * >nul reg add HKC ...

  4. 添加右键菜单命令 在此处打开命令窗口(E)(带图标)

    @color 0A @title 添加右键菜单命令 在此处打开命令窗口(^&E)(带图标) by wjshan0808 @echo off reg add HKCR\Directory\Bac ...

  5. 自定义右键菜单,禁用浏览器自带的右键菜单[右键菜单实现--Demo]

    许多从事Web开发的会发现有些事,我们需要禁用浏览器本事自带的右键菜单,而实现自定义的右键菜单下面我们也来实现一个自定义的右键菜单 首先来创建JSP页面 <%@ page language=&q ...

  6. 给Notepad++ 加右键菜单带图标

    原文:给Notepad++ 加右键菜单带图标 从网上下载下来的Notepad++  http://download.tuxfamily.org/notepadplus/6.3.3/npp.6.3.3. ...

  7. 给Notepad++ 6.7 加右键菜单带图标

    使用的是Notepad++ 6.7,下载 NppShell64.dll 和 NppShell.dll方法:将BAT文件和下载的NppShell64.dll 和 NppShell.dll放置Notepa ...

  8. 给Notepad++ 加带图标右键菜单

    给Notepad++ 加带图标右键菜单 方式一: 拷贝以下代码建立一个reg文件,替换相关路径,保存,双击运行加入注册表 Windows Registry Editor Version 5.00 [H ...

  9. ASP.NET Boilerplate 学习 AspNet Core2 浏览器缓存使用 c#基础,单线程,跨线程访问和线程带参数 wpf 禁用启用webbroswer右键菜单 EF Core 2.0使用MsSql/MySql实现DB First和Code First ASP.NET Core部署到Windows IIS QRCode.js:使用 JavaScript 生成

    ASP.NET Boilerplate 学习   1.在http://www.aspnetboilerplate.com/Templates 网站下载ABP模版 2.解压后打开解决方案,解决方案目录: ...

随机推荐

  1. 回顾Spirng ioc 控制反转

    Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的.结合网上对Spring Ioc的理解,回顾一下自 ...

  2. 关于.dll' could not be found 的问题以及解决方案

    最近做项目遇到这个问题,搞了半天,也没有解决. 后台看看了生成的详细信息,提示引用的版本不统一,最后移除,再添加一个相同版本的Mysql.Data.Mysql.Data.Entity.EF6 就解决了 ...

  3. MATLAB-RSP 随笔

    1.Getting Started with Signal Analyzer App 161216 (1) 在命令行中输入:signalAnalyzer. (2)在工作空间中选择要分析的信号

  4. 2016-WAS

    http://cuisuqiang.iteye.com/blog/1936402 http://gukeming888.iteye.com/blog/1706475 dd:2016-3-28 inst ...

  5. 多个文件下载打包生成zip格式下载

    这个多个文件下载生成zip格式必须先引用一个ICSharpCode.SharpZipLib.dll. 代码如下  //将多个文件打包成压缩文件zip格式下载         protected voi ...

  6. zookeeper_service 出错 ........... are only available on JDK 1.5 and higher

    出错::  ContextLoader:215 ERROR - Context initialization failed org.springframework.beans.factory.Bean ...

  7. 打不死的redis集群

    导读 最近遇到部分系统因为redis服务挂掉,导致部分服务不可用.所以希望搭建一个redis集群镜像,把原先散落各处的redis服务器统一管理起来,并且保障高可用和故障自动迁移. 最近遇到部分系统因为 ...

  8. Android中锁定文件的方法

    androidSDK中并没有锁定文件相关的api. 但是android是基于linux操作系统的,linux比较底层,灵活性也更大,为了实现锁定文件的效果,大概有以下几种办法: 用chmod命令修改文 ...

  9. APP支付报错ALI40247处理方案!

    简直日狗!这里要吐槽支付宝: 1.支付宝文档太复杂,分类虽然详细,但是我找不到app支付 对应服务端的demo 2.提供下载的sdk都是全整合的 用下来都是一条龙服务,还有一些客户端(app)的请求也 ...

  10. linQ学习笔记之一

    linq解决的问题 1.编程语言中的数据类型与数据库中的数据类型形成的两套体系 2.SQL编码体验落后 3.SQL和XML都有各自的查询语言,而对象没有自己的查询语言 linq简单的集合查询和fore ...