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. 分页型Memory LCD显存管理与emWin移植

    上一篇随笔整理了一下逐行扫描型Memory LCD的显存管理与emWin移植,这篇就整理一下分页型Memory LCD显存管理与emWin移植. //此处以SSD1306作为实例 //OLED的显存/ ...

  2. 利用vim查看日志,快速定位问题

    起因 在一般的情况下,如果开发过程中测试报告了一个问题,我一般会这么做: 1.在自己的开发环境下重试一下测试的操作,看看能不能重现问题.不行转2 2.数据库连接池改成测试库的地址,在自己的开发环境下重 ...

  3. 分析oracle的执行计划(explain plan)并对对sql进行优化实践

    基于oracle的应用系统很多性能问题,是由应用系统sql性能低劣引起的,所以,sql的性能优化很重要,分析与优化sql的性能我们一般通过查看该sql的执行计划,本文就如何看懂执行计划,以及如何通过分 ...

  4. php中引用&的真正理解-变量引用、函数引用、对象引用

    php的引用(就是在变量或者函数.对象等前面加上&符号) //最重要就是 删除引用的变量 ,只是引用的变量访问不了,但是内容并没有销毁 在PHP 中引用的意思是:不同的名字访问同一个变量内容. ...

  5. JAVA将数字字符串强制转换成整型变量----求参数之和实验代码(附流程图)

    一.设计思想 先将参数个数输出,并利用循环结果将参数逐个输出,再将字符串强制转化成整型,利用循环结构相加求和 二.程序流程图 三.源程序代码 package demo; public class Co ...

  6. PG 中 JSON 字段的应用

    13 年发现 pg 有了 json 类型,便从 oracle 转 pg,几年下来也算比较熟稔了,总结几个有益的实践. 用途一:存储设计时无法预料的文档性的数据.比如,通常可以在人员表准备一个 json ...

  7. C和指针 第十六章 标准函数库

    字符串转换: long int strtol(char const *string, char **unused, int base); 将字符串转换为数值形式,遇到非法字符停止,如果stop不是NU ...

  8. 超详细Web前端开发规范文档

    http://www.w3cfuns.com/notes/26488/c2ae788c77f835357025026a148b9863.html

  9. android键盘输入读取

    android键盘输入读取  监控android键盘输入方式有两种,一种在java层实现,重写onKeyDown和onKeyUp方法.另一种是在jni层实现,监控/dev/input/event0键盘 ...

  10. linux Mint mysql 安装

    sudo apt-get install mysql-server 之后按照提示,输入root的密码,再次输入密码,就好了. mysql -uroot -p**** //连接数据库 show data ...