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. PHP header函数设置http报文头(设置头部域)

    PHP HTTP 简介: HTTP 函数允许您在其他输出被发送之前,对由 Web 服务器发送到浏览器的信息进行操作. PHP 5 HTTP 函数:header()     向客户端发送原始的 HTTP ...

  2. 【IOS】将字体大小不同的文字底部对齐

    从WP转IOS了,还是放不下...... 在项目中,要实现如图多个不同大小的文字   底部对齐的效果   像下面这样: (想要的效果) 以为用三个UIFont不同的UILabel  之后让他们底部对齐 ...

  3. Selector

    原文: https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/Sele ...

  4. 兼容8事件绑定与解绑addEventListener、removeEventListener和ie的attachEvent、detachEvent

    兼容8事件绑定与解绑addEventListener.removeEventListener和ie的attachEvent.detachEvent   ;(function(){ // 事件绑定 bi ...

  5. (原创)微信支付SDK调用的核心代码与分析(基于Android)

    先上代码,后面会分析 String url = "http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php?plat=android"; ...

  6. mysql 查询表结构

    use information_schema; select column_name, column_type, data_type, is_nullable, column_comment from ...

  7. layui常用方法

    很好用的一个ui组件,弹出,分页等 http://layer.layui.com/ 1 带叉叉的弹窗 layer.open({ type: , title: false, //不显示标题 conten ...

  8. [Sass]局部变量和全局变量

    [Sass]局部变量和全局变量 Sass 中变量的作用域在过去几年已经发生了一些改变.直到最近,规则集和其他范围内声明变量的作用域才默认为本地.如果已经存在同名的全局变量,从 3.4 版本开始,Sas ...

  9. 【日记】搭建一个node本地服务器

    用node搭建一个本地http服务器.首先了解htpp服务器原理 HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端.HTTP协议采用了请求/响应模型 ...

  10. CA扫盲的巅峰之作!!!

    ★ 先说一个通俗的例子 考虑到证书体系的相关知识比较枯燥.晦涩.俺先拿一个通俗的例子来说事儿. ◇ 普通的介绍信 想必大伙儿都听说过介绍信的例子吧?假设 A 公司的张三先生要到 B 公司去拜访,但是 ...