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. [原创] Delphi小工具(Windows资源管理器右键菜单扩展)

    两个小工具 1. 项目临时文件清理 2. Android Ndk 编译 c/c++ jni 源码工具. 下载后,点击Reg.bat就可以完成注册安装.不需要时点击 UnReg.Bat 就可以删除菜单. ...

  2. HTML 语义化之b_i_em_strong

    默认效果 i和em都是斜体.b和strong都是加粗. 语义区别: em 和 strong 分别表示句中强调和全局加重强调 搜索引擎中更受重视,一些语音阅读器也会根据它在阅读时加强语气. i 和 b ...

  3. CJCMS系列---说说项目中的缓存实现(1)

    缓存者,临时文件交换区也.主要就是方便查找,提高查找效率(效率在于读内存速度比读硬盘快).  大多数的项目的缓存都是通过设定过期时间来做的,可是我对于这样的替换策略不以为然,而且会导致混乱. 有人说: ...

  4. 利用JS实现点击按钮后图片自动切换

    我么常常看到一个网站的主界面的图片可以切换自如,那么又是如何实现的呢? 1.HTML页面布局如图所示: Main(div) top(div)(显示需要显示的图片) bottom UL (li)< ...

  5. FFT NNT

    算算劳资已经多久没学新算法了,又要重新开始学辣.直接扔板子,跑...话说FFT算法导论里讲的真不错,去看下就懂了. //FFT#include <cstdio> #include < ...

  6. Linux编程环境

    yum -y install gcc gcc-c++ libtool-ltdl libtool-ltdl-devel openssl openssl-devel curl curl-devel lib ...

  7. new Array(n) 的坑 密集数组和稀疏数组

    今天写Vue时遇到一个奇怪问题,需要监控网页上的input 是否都有值 // var blanks = new Array(number); // blanks的监控属性 var emptyNumbe ...

  8. Javascript模块化编程(二):AMD规范

    Javascript模块化编程(二):AMD规范   作者: 阮一峰 原文地址:http://www.ruanyifeng.com/blog/2012/10/asynchronous_module_d ...

  9. raspbian调整分辨率

    参考 https://www.raspberrypi.org/documentation/configuration/config-txt.md 设置示例,设置成800*600 tvservice - ...

  10. java并行计算Fork和Join的使用

    Java在JDK7之后加入了并行计算的框架Fork/Join,可以解决我们系统中大数据计算的性能问题.Fork/Join采用的是分治法,Fork是将一个大任务拆分成若干个子任务,子任务分别去计算,而J ...