博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FineUI控件集合
阅读量:6321 次
发布时间:2019-06-22

本文共 6587 字,大约阅读时间需要 21 分钟。

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

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     /// 11     /// 控件集合,继承自Collection
12 ///
13 public class BaseCollection
: Collection
where T : ControlBase14 {15 private ControlBase _parent;16 private string _groupName;17 18 ///
19 /// 构造函数20 /// 21 ///
父控件实例22 public BaseCollection(ControlBase parentControl)23 {24 _parent = parentControl;25 _groupName = Guid.NewGuid().ToString();26 }27 28 ///
29 /// 向集合中插入一个元素30 /// 31 ///
32 ///
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 ///
45 /// 删除集合中的一个元素46 /// 47 ///
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 ///
57 /// 清空集合58 /// 59 protected override void ClearItems()60 {61 int startIndex = GetStartIndex();62 // We should only remove this collection related controls63 // 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 ///
74 /// 获取类型 T 在父控件子集中的开始位置75 /// 76 ///
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 }
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, 在每个选项卡上创建工具栏的回调函数,如果不需要选项卡工具栏,可以设置此值为null100     // 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 }
View Code

 

转载于:https://www.cnblogs.com/cykj/p/FineUI-control-collection.html

你可能感兴趣的文章
在Horizon Workspace中配置Windows单点登录-进阶篇
查看>>
cp命令
查看>>
【Java 基础篇】【第一课】HelloWorld
查看>>
Vmware 10 安装
查看>>
共享文件迁移(fileserver)——从windows server 2003到windows server 2008
查看>>
#2002-The server is not responding (or the local MySQL server's socket is not correctly configur
查看>>
Shell主要逻辑源码级分析(1)——SHELL运行流程
查看>>
python 获取当前节点instance UUID
查看>>
【图解】最流行的7个JavaScript 框架各自的优点
查看>>
使用expect 打通到其他服务器无密码访问
查看>>
php common errors
查看>>
彻底明白IP地址——计算相关地址
查看>>
JS实现的表单验证和强大的×××
查看>>
安装win10操作系统的设备将要突破10亿台
查看>>
程序员之路,蛇年快加速!
查看>>
java书籍推荐
查看>>
NAT双出口的热备份
查看>>
lvs直接路由模式简单部署
查看>>
Nginx多站点设置
查看>>
[Django学习]第三章 视图和url配置
查看>>