前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FineUI控件集合

FineUI控件集合

作者头像
用户1112962
发布2018-07-03 16:38:54
5200
发布2018-07-03 16:38:54
举报

FineUI(开源版)基于 ExtJS 的开源 ASP.NET 控件库。

代码语言:javascript
复制
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4 using System.Collections.ObjectModel;
 5 using System.Web.UI;
 6 using System.Collections;
 7 
 8 namespace FineUI
 9 {
10     /// <summary>
11     /// 控件集合,继承自Collection<T>
12     /// </summary>
13     public class BaseCollection<T> : Collection<T> where T : ControlBase
14     {
15         private ControlBase _parent;
16         private string _groupName;
17 
18         /// <summary>
19         /// 构造函数
20         /// </summary>
21         /// <param name="parentControl">父控件实例</param>
22         public BaseCollection(ControlBase parentControl)
23         {
24             _parent = parentControl;
25             _groupName = Guid.NewGuid().ToString();
26         }
27 
28         /// <summary>
29         /// 向集合中插入一个元素
30         /// </summary>
31         /// <param name="index"></param>
32         /// <param name="item"></param>
33         protected override void InsertItem(int index, T item)
34         {
35             item.CollectionGroupName = _groupName;
36             item.RenderWrapperNode = false;
37 
38             int startIndex = GetStartIndex();
39             _parent.Controls.AddAt(startIndex + index, item);
40 
41             base.InsertItem(index, item);
42         }
43 
44         /// <summary>
45         /// 删除集合中的一个元素
46         /// </summary>
47         /// <param name="index"></param>
48         protected override void RemoveItem(int index)
49         {
50             int startIndex = GetStartIndex();
51             _parent.Controls.RemoveAt(startIndex + index);
52 
53             base.RemoveItem(index);
54         }
55 
56         /// <summary>
57         /// 清空集合
58         /// </summary>
59         protected override void ClearItems()
60         {
61             int startIndex = GetStartIndex();
62             // We should only remove this collection related controls
63             // Note we must loop from the last element(Count-1) to the first one(0)
64             for (int i = startIndex + Count - 1; i >= startIndex; i--)
65             {
66                 _parent.Controls.RemoveAt(i);
67             }
68 
69             base.ClearItems();
70         }
71 
72 
73         /// <summary>
74         /// 获取类型 T 在父控件子集中的开始位置
75         /// </summary>
76         /// <returns></returns>
77         private int GetStartIndex()
78         {
79             int startIndex = 0;
80 
81             foreach (Control control in _parent.Controls)
82             {
83                 if (control is ControlBase && (control as ControlBase).CollectionGroupName == _groupName)
84                 {
85                     break;
86                 }
87                 startIndex++;
88             }
89 
90             return startIndex;
91         }
92 
93     }
94 }
代码语言:javascript
复制
  1 function onReady() {
  2     var btnExpandAll = Ext.getCmp(IDS.btnExpandAll);
  3     var btnCollapseAll = Ext.getCmp(IDS.btnCollapseAll);
  4     var mainMenu = Ext.getCmp(IDS.mainMenu);
  5     var mainTabStrip = Ext.getCmp(IDS.mainTabStrip);
  6     var windowSourceCode = Ext.getCmp(IDS.windowSourceCode);
  7 
  8     function getExpandedPanel() {
  9         var panel = null;
 10         mainMenu.items.each(function (item) {
 11             if (!item.collapsed) {
 12                 panel = item;
 13             }
 14         });
 15         return panel;
 16     }
 17 
 18     // 点击全部展开按钮
 19     btnExpandAll.on('click', function () {
 20         if (IDS.menuType == "menu") {
 21             mainMenu.expandAll();
 22         } else {
 23             var expandedPanel = getExpandedPanel();
 24             if (expandedPanel) {
 25                 expandedPanel.items.itemAt(0).expandAll();
 26             }
 27         }
 28     });
 29 
 30     // 点击全部折叠按钮
 31     btnCollapseAll.on('click', function () {
 32         if (IDS.menuType == "menu") {
 33             mainMenu.collapseAll();
 34         } else {
 35             var expandedPanel = getExpandedPanel();
 36             if (expandedPanel) {
 37                 expandedPanel.items.itemAt(0).collapseAll();
 38             }
 39         }
 40     });
 41 
 42     function createToolbar() {
 43 
 44         // 由工具栏上按钮获得当前标签页中的iframe节点
 45         function getCurrentIframeNode(button) {
 46             // 注意:button.ownerCt 是工具栏,button.ownerCt.ownerCt 就是当前激活的标签页。
 47             return Ext.DomQuery.selectNode('iframe', button.ownerCt.ownerCt.el.dom);
 48         }
 49 
 50         // 动态创建按钮
 51         var sourcecodeButton = new Ext.Button({
 52             text: "源代码",
 53             type: "button",
 54             cls: "x-btn-text-icon",
 55             icon: "./icon/page_white_code.png",
 56             listeners: {
 57                 click: function (button, e) {
 58                     windowSourceCode.x_show('./common/source.aspx?files=' + getCurrentIframeNode(button).attributes['src'].value, '源代码');
 59                     e.stopEvent();
 60                 }
 61             }
 62         });
 63 
 64         var openNewWindowButton = new Ext.Button({
 65             text: '新标签页中打开',
 66             type: "button",
 67             cls: "x-btn-text-icon",
 68             icon: "./icon/tab_go.png",
 69             listeners: {
 70                 click: function (button, e) {
 71                     window.open(getCurrentIframeNode(button).src, "_blank");
 72                     e.stopEvent();
 73                 }
 74             }
 75         });
 76 
 77         var refreshButton = new Ext.Button({
 78             text: '刷新',
 79             type: "button",
 80             cls: "x-btn-text-icon",
 81             icon: "./icon/reload.png",
 82             listeners: {
 83                 click: function (button, e) {
 84                     getCurrentIframeNode(button).contentWindow.location.reload(); //.replace(href);
 85                     e.stopEvent();
 86                 }
 87             }
 88         });
 89 
 90         return new Ext.Toolbar({
 91             items: ['->', sourcecodeButton, '-', refreshButton, '-', openNewWindowButton]
 92         });
 93     }
 94 
 95 
 96     // 初始化主框架中的树(或者Accordion+Tree)和选项卡互动,以及地址栏的更新
 97     // 1. treeMenu, 主框架中的树控件实例,或者内嵌树控件的手风琴控件实例
 98     // 2. mainTabStrip, 主框架中的选项卡控件实例
 99     // 3. tbarCallback, 在每个选项卡上创建工具栏的回调函数,如果不需要选项卡工具栏,可以设置此值为null
100     // 4. updateLocationHash, 切换选项卡时是否在top.location.hash记录当前页面的地址
101     X.util.initTreeTabStrip(mainMenu, mainTabStrip, createToolbar, true);
102 
103 
104     // 公开添加示例标签页的方法
105     window.addExampleTab = function (id, url, text, icon) {
106         X.util.addMainTab(mainTabStrip, id, url, text, icon);
107     };
108 
109     window.removeActiveTab = function () {
110         var activeTab = mainTabStrip.getActiveTab();
111         mainTabStrip.removeTab(activeTab.id);
112     };
113 
114 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-03-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档