1. <%@ Page Language="C#" %>
  2.  
  3. <%@ Import Namespace="System.Collections.Generic" %>
  4.  
  5. <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
  6.  
  7. <script runat="server">
  8. protected void Page_Load(object sender, EventArgs e)
  9. {
  10. Ext.Net.TreePanel tree = new Ext.Net.TreePanel();
  11.  
  12. this.PlaceHolder1.Controls.Add(tree);
  13.  
  14. tree.ID = "TreePanel1";
  15. tree.Width = Unit.Pixel(300);
  16. tree.Height = Unit.Pixel(450);
  17. tree.Icon = Icon.BookOpen;
  18. tree.Title = "Catalog";
  19. tree.AutoScroll = true;
  20.  
  21. Ext.Net.Button btnExpand = new Ext.Net.Button();
  22. btnExpand.Text = "Expand All";
  23. btnExpand.Listeners.Click.Handler = tree.ClientID + ".expandAll();";
  24.  
  25. Ext.Net.Button btnCollapse = new Ext.Net.Button();
  26. btnCollapse.Text = "Collapse All";
  27. btnCollapse.Listeners.Click.Handler = tree.ClientID + ".collapseAll();";
  28.  
  29. Toolbar toolBar = new Toolbar();
  30. toolBar.ID = "Toolbar1";
  31. toolBar.Items.Add(btnExpand);
  32. toolBar.Items.Add(btnCollapse);
  33. tree.TopBar.Add(toolBar);
  34.  
  35. StatusBar statusBar = new StatusBar();
  36. statusBar.AutoClear = 1000;
  37. tree.BottomBar.Add(statusBar);
  38.  
  39. tree.Listeners.Click.Handler = statusBar.ClientID + ".setStatus({text: 'Node Selected: <b>' + node.text + '</b>', clear: true});";
  40. tree.Listeners.ExpandNode.Handler = statusBar.ClientID + ".setStatus({text: 'Node Expanded: <b>' + node.text + '</b>', clear: true});";
  41. tree.Listeners.ExpandNode.Delay = 30;
  42. tree.Listeners.CollapseNode.Handler = statusBar.ClientID + ".setStatus({text: 'Node Collapsed: <b>' + node.text + '</b>', clear: true});";
  43.  
  44. Ext.Net.TreeNode root = new Ext.Net.TreeNode("Composers");
  45. root.Expanded = true;
  46. tree.Root.Add(root);
  47.  
  48. List<Composer> composers = this.GetData();
  49.  
  50. foreach (Composer composer in composers)
  51. {
  52. Ext.Net.TreeNode composerNode = new Ext.Net.TreeNode(composer.Name, Icon.UserGray);
  53. root.Nodes.Add(composerNode);
  54.  
  55. foreach(Composition composition in composer.Compositions)
  56. {
  57. Ext.Net.TreeNode compositionNode = new Ext.Net.TreeNode(composition.Type.ToString());
  58. composerNode.Nodes.Add(compositionNode);
  59.  
  60. foreach (Piece piece in composition.Pieces)
  61. {
  62. Ext.Net.TreeNode pieceNode = new Ext.Net.TreeNode(piece.Title, Icon.Music);
  63. compositionNode.Nodes.Add(pieceNode);
  64. }
  65. }
  66. }
  67. }
  68.  
  69. public class Composer
  70. {
  71. public Composer(string name) { this.Name = name; }
  72. public string Name { get; set; }
  73.  
  74. private List<Composition> compositions;
  75. public List<Composition> Compositions
  76. {
  77. get
  78. {
  79. if (this.compositions == null)
  80. {
  81. this.compositions = new List<Composition>();
  82. }
  83. return this.compositions;
  84. }
  85. }
  86. }
  87.  
  88. public class Composition
  89. {
  90. public Composition() { }
  91.  
  92. public Composition(CompositionType type)
  93. {
  94. this.Type = type;
  95. }
  96.  
  97. public CompositionType Type { get; set; }
  98.  
  99. private List<Piece> pieces;
  100. public List<Piece> Pieces
  101. {
  102. get
  103. {
  104. if (this.pieces == null)
  105. {
  106. this.pieces = new List<Piece>();
  107. }
  108. return this.pieces;
  109. }
  110. }
  111. }
  112.  
  113. public class Piece
  114. {
  115. public Piece() {}
  116.  
  117. public Piece(string title)
  118. {
  119. this.Title = title;
  120. }
  121.  
  122. public string Title { get; set; }
  123. }
  124.  
  125. public enum CompositionType
  126. {
  127. Concertos,
  128. Quartets,
  129. Sonatas,
  130. Symphonies
  131. }
  132.  
  133. public List<Composer> GetData()
  134. {
  135. Composer beethoven = new Composer("Beethoven");
  136.  
  137. Composition beethovenConcertos = new Composition(CompositionType.Concertos);
  138. Composition beethovenQuartets = new Composition(CompositionType.Quartets);
  139. Composition beethovenSonatas = new Composition(CompositionType.Sonatas);
  140. Composition beethovenSymphonies = new Composition(CompositionType.Symphonies);
  141.  
  142. beethovenConcertos.Pieces.AddRange(new List<Piece> {
  143. new Piece{ Title = "No. 1 - C" },
  144. new Piece{ Title = "No. 2 - B-Flat Major" },
  145. new Piece{ Title = "No. 3 - C Minor" },
  146. new Piece{ Title = "No. 4 - G Major" },
  147. new Piece{ Title = "No. 5 - E-Flat Major" }
  148. });
  149.  
  150. beethovenQuartets.Pieces.AddRange(new List<Piece> {
  151. new Piece{ Title = "Six String Quartets" },
  152. new Piece{ Title = "Three String Quartets" },
  153. new Piece{ Title = "Grosse Fugue for String Quartets" }
  154. });
  155.  
  156. beethovenSonatas.Pieces.AddRange(new List<Piece> {
  157. new Piece{ Title = "Sonata in A Minor" },
  158. new Piece{ Title = "sonata in F Major" }
  159. });
  160.  
  161. beethovenSymphonies.Pieces.AddRange(new List<Piece> {
  162. new Piece{ Title = "No. 1 - C Major" },
  163. new Piece{ Title = "No. 2 - D Major" },
  164. new Piece{ Title = "No. 3 - E-Flat Major" },
  165. new Piece{ Title = "No. 4 - B-Flat Major" },
  166. new Piece{ Title = "No. 5 - C Minor" },
  167. new Piece{ Title = "No. 6 - F Major" },
  168. new Piece{ Title = "No. 7 - A Major" },
  169. new Piece{ Title = "No. 8 - F Major" },
  170. new Piece{ Title = "No. 9 - D Minor" }
  171. });
  172.  
  173. beethoven.Compositions.AddRange(new List<Composition>{
  174. beethovenConcertos,
  175. beethovenQuartets,
  176. beethovenSonatas,
  177. beethovenSymphonies
  178. });
  179.  
  180. Composer brahms = new Composer("Brahms");
  181.  
  182. Composition brahmsConcertos = new Composition(CompositionType.Concertos);
  183. Composition brahmsQuartets = new Composition(CompositionType.Quartets);
  184. Composition brahmsSonatas = new Composition(CompositionType.Sonatas);
  185. Composition brahmsSymphonies = new Composition(CompositionType.Symphonies);
  186.  
  187. brahmsConcertos.Pieces.AddRange(new List<Piece> {
  188. new Piece{ Title = "Violin Concerto" },
  189. new Piece{ Title = "Double Concerto - A Minor" },
  190. new Piece{ Title = "Piano Concerto No. 1 - D Minor" },
  191. new Piece{ Title = "Piano Concerto No. 2 - B-Flat Major" }
  192. });
  193.  
  194. brahmsQuartets.Pieces.AddRange(new List<Piece> {
  195. new Piece{ Title = "Piano Quartet No. 1 - G Minor" },
  196. new Piece{ Title = "Piano Quartet No. 2 - A Major" },
  197. new Piece{ Title = "Piano Quartet No. 3 - C Minor" },
  198. new Piece{ Title = "Piano Quartet No. 3 - B-Flat Minor" }
  199. });
  200.  
  201. brahmsSonatas.Pieces.AddRange(new List<Piece> {
  202. new Piece{ Title = "Two Sonatas for Clarinet - F Minor" },
  203. new Piece{ Title = "Two Sonatas for Clarinet - E-Flat Major" }
  204. });
  205.  
  206. brahmsSymphonies.Pieces.AddRange(new List<Piece> {
  207. new Piece{ Title = "No. 1 - C Minor" },
  208. new Piece{ Title = "No. 2 - D Minor" },
  209. new Piece{ Title = "No. 3 - F Major" },
  210. new Piece{ Title = "No. 4 - E Minor" }
  211. });
  212.  
  213. brahms.Compositions.AddRange(new List<Composition>{
  214. brahmsConcertos,
  215. brahmsQuartets,
  216. brahmsSonatas,
  217. brahmsSymphonies
  218. });
  219.  
  220. Composer mozart = new Composer("Mozart");
  221.  
  222. Composition mozartConcertos = new Composition(CompositionType.Concertos);
  223.  
  224. mozartConcertos.Pieces.AddRange(new List<Piece> {
  225. new Piece{ Title = "Piano Concerto No. 12" },
  226. new Piece{ Title = "Piano Concerto No. 17" },
  227. new Piece{ Title = "Clarinet Concerto" },
  228. new Piece{ Title = "Violin Concerto No. 5" },
  229. new Piece{ Title = "Violin Concerto No. 4" }
  230. });
  231.  
  232. mozart.Compositions.Add(mozartConcertos);
  233.  
  234. return new List<Composer>{ beethoven, brahms, mozart };
  235. }
  236. </script>
  237.  
  238. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  239. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  240.  
  241. <html xmlns="http://www.w3.org/1999/xhtml">
  242. <head runat="server">
  243. <title>Multi Node TreePanel built from code-behind - Ext.NET Examples</title>
  244. <link href="../../../../resources/css/examples.css" rel="stylesheet" type="text/css" />
  245. </head>
  246. <body>
  247. <form runat="server">
  248. <ext:ResourceManager runat="server" />
  249.  
  250. <h1>Multi Node TreePanel Built From Code-Behind</h1>
  251.  
  252. <asp:PlaceHolder ID="PlaceHolder1" runat="server" />
  253. </form>
  254. </body>
  255. </html>

  

4、Ext.NET 1.7 官方示例笔记 - 树的更多相关文章

  1. 3、Ext.NET 1.7 官方示例笔记-表单

    表单[Form],就是向客户收集资料的窗口,用户在表单填写好各种信息,然后提交到服务器,服务器接收并保存到数据库里. 表单的字段类型很多,我们从最简单的开始吧. 1.1 .先开始组合框吧(ComboB ...

  2. 1、Ext.NET 1.7官方示例笔记-事件

    官网参考地址:https://examples1.ext.net/#/Events/DirectEvents/Overview/ 先了解一下“事件” Ext.NET包括3种事件机制 DirectEve ...

  3. 2、Ext.NET 1.7 官方示例笔记-按钮

    这一节应该比较简单,因为按钮相对其他控件还是比较简单的,但按钮是最常用的控件,先从简单的开始,才能循序渐进的学下去不是吗? 从上面的图片可以看出,可分基本&按钮组,先看下基本的Overview ...

  4. Angular 快速学习笔记(1) -- 官方示例要点

    创建组件 ng generate component heroes {{ hero.name }} {{}}语法绑定数据 管道pipe 格式化数据 <h2>{{ hero.name | u ...

  5. DotNetBar for Windows Forms 12.7.0.10_冰河之刃重打包版原创发布-带官方示例程序版

    关于 DotNetBar for Windows Forms 12.7.0.10_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版------------- ...

  6. DotNetBar for Windows Forms 12.5.0.2_冰河之刃重打包版原创发布-带官方示例程序版

    关于 DotNetBar for Windows Forms 12.5.0.2_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...

  7. DotNetBar for Windows Forms 12.2.0.7_冰河之刃重打包版原创发布-带官方示例程序版

    关于 DotNetBar for Windows Forms 12.2.0.7_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...

  8. html5游戏引擎phaser官方示例学习

    首发:个人博客,更新&纠错&回复 phaser官方示例学习进行中,把官方示例调整为简明的目录结构,学习过程中加了点中文注释,代码在这里. 目前把官方的完整游戏示例看了一大半, brea ...

  9. 将百度坐标转换的javascript api官方示例改写成传统的回调函数形式

    改写前: 百度地图中坐标转换的JavaScript API示例官方示例如下: var points = [new BMap.Point(116.3786889372559,39.90762965106 ...

随机推荐

  1. selenium设置user-agent以及对于是否是浏览器内核进行反爬

    (Session info: chrome=75.0.3770.90),不同版本方法可能会有些不同 推荐查资料网站必应可以避开一堆广告 一.user-agent设置 from selenium imp ...

  2. 易优CMS:关于assign你知道多少

    [基础用法] 名称:assign 功能:模板文件中定义变量,可在其他标签里使用该变量 语法: {eyou:assign name='typeid' value='5' /} 文件: 无 参数: nam ...

  3. sed文本处理

    1.基本概述 sed是一个流编辑器, 非交互式的编辑器,它一次处理一行内容. 处理时,把当前处理的行存储在临时缓冲区中,称* 为"模式空间"(pattern space) 接着用 ...

  4. python web框架Flask——后台登录

    项目搭建 创建一个项目之后,需要在手动创建几个包(含有__init__.py文件的目录)和文件 1.在主目录下创建配置文件:config.py 2.在主目录下创建扩展文件:exts.py 3.在主目录 ...

  5. Java 构造结构私有化

    Java 构造结构私有化 单例设计模式:(Singleton) 在一般情况下,一个类只有通过产生对象之后才可以操作这个类. class Singleton { public void print() ...

  6. 转.HTML中img标签的src属性绝对路径问题解决办法,完全解决!

    HTML中img标签的src属性绝对路径问题解决办法,完全解决   需求:有时候自己的项目img的src路径需要用到本地某文件夹下的图片,而不是直接使用项目根目录下的图片. 场景:eclipse,to ...

  7. 推荐一下干货-------为什么你的app不耐看

    直接上链接: 为什么你的app不耐看(上)https://www.ui.cn/detail/339252.html 为什么你的app不耐看(下)https://www.ui.cn/detail/423 ...

  8. NSURLSession的文件下载

    小文件的下载,代码示例: //NSURLSession的下载 [[[NSURLSession sharedSession] dataTaskWithURL:[NSURL URLWithString:@ ...

  9. 1_Swift概况

    Swift 标准库 解决复杂的问题并编写高性能,可读的代码 概况 Swift标准库定义了用于编写Swift程序的基本功能,其中包括 1.如基本数据类型Int,Double以及String 2.共同的数 ...

  10. sql使用cte表达式进行递归查询

    --递归获取所有子节点 with temp as ( select * from MK_Base_Department where F_DepartmentId='5f258320-c1b7-42a4 ...