- 浏览: 342085 次
- 性别:
- 来自: 武汉
最新评论
-
ynymf:
错位问题看这里:http://www.cnblogs.com/ ...
EXTJS制作的嵌套表格实例(点击一行,展开下面的子表) -
xlshlr:
code.php在哪????貌似么有找到这个文件
ExtJS带验证码登录框[新增回车提交] -
langfeng123ac:
二货,这种写法本地又不行,本地有图片,服务器上又没图片。。浪费 ...
JQUERY+ASP.NET的AJAX文件上传(含Demo) -
553718707:
楼主有没有解决方法啊?
EXTJS制作的嵌套表格实例(点击一行,展开下面的子表) -
553718707:
这个代码对于,子表格的列数很多的时候会出现子表格的列与数据行错 ...
EXTJS制作的嵌套表格实例(点击一行,展开下面的子表)
实例:
实例是模仿dhtmlxTree的
在render中主要添加了这一行'<img src="', a.isCheck ? "/images/tc/iconCheckAll.gif" : "/images/tc/iconUnCheckAll.gif",'" class="x-tree-ec-icon">',
再获取这个节点 this.ckNode = cs[2];
在initEvents中添加该节点的事件:
E.on(this.ckNode, "click", this.ckClick, this, true);
很简单!
- Ext.tree.TreeNodeUI.prototype.initEvents = function(){
- this.node.on("move", this.onMove, this);
- var E = Ext.EventManager;
- var a = this.anchor;
- var el = Ext.fly(a);
- if(Ext.isOpera){ // opera render bug ignores the CSS
- el.setStyle("text-decoration", "none");
- }
- el.on("click", this.onClick, this);
- el.on("dblclick", this.onDblClick, this);
- el.on("contextmenu", this.onContextMenu, this);
- var icon = Ext.fly(this.iconNode);
- icon.on("click", this.onClick, this);
- icon.on("dblclick", this.onDblClick, this);
- icon.on("contextmenu", this.onContextMenu, this);
- E.on(this.ecNode, "click", this.ecClick, this, true);
- E.on(this.ckNode, "click", this.ckClick, this, true);
- if(this.node.disabled){
- this.addClass("x-tree-node-disabled");
- }
- if(this.node.hidden){
- this.addClass("x-tree-node-disabled");
- }
- var ot = this.node.getOwnerTree();
- var dd = ot.enableDD || ot.enableDrag || ot.enableDrop;
- if(dd && (!this.node.isRoot || ot.rootVisible)){
- Ext.dd.Registry.register(this.elNode, {
- node: this.node,
- handles: [this.iconNode, this.textNode],
- isHandle: false
- });
- }
- };
- Ext.tree.TreeNodeUI.prototype.ckClick = function(e){
- if(!this.animating && this.node.hasChildNodes()){
- this.node.expand();
- }
- this.updateCheckIcon();
- };
- Ext.tree.TreeNodeUI.prototype.updateCheckIcon = function(){
- if(this.node.attributes.isCheck)
- {
- this.ckNode.src="/images/tc/iconUnCheckAll.gif";
- this.node.attributes.isCheck=false;
- this.updateFCUNCheckIcon(this.node.parentNode);//只能放在上一句的后面
- this.updateCCUNCheckIcon(this.node.childNodes);
- }
- else
- {
- this.ckNode.src="/images/tc/iconCheckAll.gif";
- this.node.attributes.isCheck=true;
- this.updateFCheckIcon(this.node.parentNode);//只能放在上一句的后面
- this.updateCCheckIcon(this.node.childNodes);//只能放在上一句的后面
- }
- };
- //更新父接点为选种
- Ext.tree.TreeNodeUI.prototype.updateFCheckIcon = function(pn){
- if(pn!=null)
- {
- pn.attributes.isCheck=true;
- pn.ui.ckNode.src="/images/tc/iconCheckAll.gif";
- this.updateFCheckIcon(pn.parentNode);
- }
- }
- //更新子节点为选种
- Ext.tree.TreeNodeUI.prototype.updateCCheckIcon = function(cn){
- if(cn!=null)
- {
- for(var i=0;i<cn.length;i++)
- {
- cn[i].attributes.isCheck=true;
- cn[i].ui.ckNode.src="/images/tc/iconCheckAll.gif";
- if(cn[i].hasChildNodes()){
- cn[i].expand();
- var temp=cn[i].childNodes;
- this.updateCCheckIcon(cn[i].childNodes);
- }
- }
- }
- }
- //更新父接点为不�?�?
- Ext.tree.TreeNodeUI.prototype.updateFCUNCheckIcon = function(n){
- //如果有其它的兄弟接点未勾选掉。不更改父节�?
- var flag=true;
- if(n!=null)//如果是父节点,此处为空�?�?��要在这进行判�?
- {
- var nodes = n.childNodes;
- for(var i=0;i<nodes.length;i++)
- {
- if(nodes[i].attributes.isCheck)
- {
- flag=false
- break;
- }
- }
- if(n!=null && flag)
- {
- n.attributes.isCheck=false;
- n.ui.ckNode.src="/images/tc/iconUnCheckAll.gif";
- this.updateFCUNCheckIcon(n.parentNode);
- }
- }
- }
- //更新子接点为不�?�?
- Ext.tree.TreeNodeUI.prototype.updateCCUNCheckIcon = function(cn){
- if(cn!=null)
- {
- for(var i=0;i<cn.length;i++)
- {
- cn[i].attributes.isCheck=false;
- cn[i].ui.ckNode.src="/images/tc/iconUnCheckAll.gif";
- if(cn[i].hasChildNodes()){
- cn[i].expand();
- var temp=cn[i].childNodes;
- this.updateCCUNCheckIcon(cn[i].childNodes);
- }
- }
- }
- }
- Ext.tree.TreeNodeUI.prototype.render=function(bulkRender){
- var n = this.node;
- var targetNode = n.parentNode ?
- n.parentNode.ui.getContainer() : n.ownerTree.container.dom;
- if(!this.rendered){
- this.rendered = true;
- var a = n.attributes;
- // add some indent caching, this helps performance when rendering a large tree
- this.indentMarkup = "";
- if(n.parentNode){
- this.indentMarkup = n.parentNode.ui.getChildIndent();
- }
- var buf = ['<li class="x-tree-node"><div class="x-tree-node-el ', n.attributes.cls,'">',
- '<span class="x-tree-node-indent">',this.indentMarkup,"</span>",
- '<img src="', this.emptyIcon, '" class="x-tree-ec-icon">',
- '<img src="', a.isCheck ? "/images/tc/iconCheckAll.gif" : "/images/tc/iconUnCheckAll.gif",'" class="x-tree-ec-icon">',
- '<img src="', a.icon || this.emptyIcon, '" class="x-tree-node-icon',(a.icon ? " x-tree-node-inline-icon" : ""),'" unselectable="on">',
- '<a hidefocus="on" href="',a.href ? a.href : "#",'" tabIndex="1" ',
- a.hrefTarget ? ' target="'+a.hrefTarget+'"' : "", '><span unselectable="on">',n.text,"</span></a></div>",
- '<ul class="x-tree-node-ct" style="display:none;"></ul>',
- "</li>"];
- if(bulkRender !== true && n.nextSibling && n.nextSibling.ui.getEl()){
- this.wrap = Ext.DomHelper.insertHtml("beforeBegin",
- n.nextSibling.ui.getEl(), buf.join(""));
- }else{
- this.wrap = Ext.DomHelper.insertHtml("beforeEnd", targetNode, buf.join(""));
- }
- this.elNode = this.wrap.childNodes[0];
- this.ctNode = this.wrap.childNodes[1];
- var cs = this.elNode.childNodes;
- this.indentNode = cs[0];
- this.ecNode = cs[1];
- this.ckNode = cs[2];
- this.iconNode = cs[3];
- this.anchor = cs[4];
- this.textNode = cs[4].firstChild;
- if(a.qtip){
- if(this.textNode.setAttributeNS){
- this.textNode.setAttributeNS("ext", "qtip", a.qtip);
- if(a.qtipTitle){
- this.textNode.setAttributeNS("ext", "qtitle", a.qtipTitle);
- }
- }else{
- this.textNode.setAttribute("ext:qtip", a.qtip);
- if(a.qtipTitle){
- this.textNode.setAttribute("ext:qtitle", a.qtipTitle);
- }
- }
- }
- this.initEvents();
- //this.renderIndent(); cached above now instead call updateExpandIcon
- this.updateExpandIcon();
- }else{
- if(bulkRender === true) {
- targetNode.appendChild(this.wrap);
- }
- }
- };
- //===============================================================================================================
- Ext.onReady(function(){
- // shorthand
- <!-- 删除等待进度条�?-->
- Ext.get("loading").remove();
- var Tree = Ext.tree;
- var dh = Ext.DomHelper;
- var tree = new Tree.TreePanel('tree-div', {
- animate:true,
- loader: new Tree.TreeLoader({dataUrl:'/tree/getTreeJson'}),
- containerScroll: true
- //uiProvider: MyNodeUI
- });
- tree.on('contextmenu',contextmenu,tree);
- //tree.on('expand',insertCheckbox,tree);
- // set the root node
- var root = new Tree.AsyncTreeNode({
- text: 'Topic',
- draggable:false,
- isCheck:true,
- id:'1'
- });
- tree.setRootNode(root);
- //render the tree
- tree.render();
- var editor = new Ext.tree.TreeEditor(tree, {allowBlank: false});
- editor.setSize(5,5);
- //root.expand(true,false);
- //容许树可以编�?
- //var ge = new Ext.tree.TreeEditor(tree, {allowBlank:false,blankText:'A name is required',selectOnFocus:true});
- //创建右键菜单
- function contextmenu(node,e){
- e.stopEvent();
- //var temp=ds.getAt(node.id);
- // alert(temp.data.email);
- var menu = new Ext.menu.Menu({
- id: 'mainMenu',
- items: [
- new Ext.menu.Item({
- text: '添加'
- }),
- new Ext.menu.Item({
- text: '删除'
- }),
- new Ext.menu.Item({
- text: '更新'
- }),
- new Ext.menu.Item({
- text: '刷新'
- })
- ]
- });
- var coords = e.getXY();
- menu.showAt([coords[0], coords[1]]);
- };
- });
- //treeLoader.on('beforeload', function(loader,node,callback){
- // if(node.attributes.tlevel != 3){
- // loader.dataUrl ='../getChildTreeNodeJsonObject';
- // }else{
- // return false;
- // }
- // });
发表评论
-
浅谈Coolite 方法调用
2009-06-13 08:24 2879今天需要做个复选框删除,碰到了一个小难题,然后我一通乱写,居然 ... -
ExtJS Loading 悬浮层
2009-06-08 11:45 4219<!DOCTYPE html PUBLIC &q ... -
Ext中TreePanel控件和TabPanel控件搭配测试
2009-03-23 08:58 2647在实际的项目中,左边树形菜单,提供各种功能点击,右边一个面板, ... -
ExtJs grid使用详细[转]
2009-03-08 21:36 89392008-11-20 09:09 Ext ... -
ExtJS带验证码登录框[新增回车提交]
2009-03-08 21:29 7030/** 用户带验证码登 ... -
ExtJs2.0学习系列(14)--Ext.TreePanel之第三式(可增删改的树)
2009-03-04 19:28 1449继续tree的learn! 今天就来个可增删改的树吧,操作数 ... -
extjs中 combobox级联
2009-03-04 19:13 7336关键字: extjs, combobox, 级 ... -
ext动态新增一行之二
2009-03-03 10:39 1441ext 动态 新增行 新增一行(2)------------- ... -
ext动态新增一行
2009-03-03 10:37 1561ext 动态 新增行 新增一行(1)------------- ... -
ext表单之高级选项
2009-03-03 10:36 1163ext表单之高级选项--------------------- ... -
ext实现标签式浏览内容
2009-03-03 10:31 1507Ext.onReady(function(){ E ... -
ext异步树加入子节点事件
2009-03-03 10:30 2144extext异步树加入子节点 ... -
实现Ext combox 动态数据加载
2009-03-02 20:37 2479核心代码如下:(注意名称的对应!) 服务器生成的json数据形 ... -
解决TreeNode.reload()失效的办法
2009-03-02 20:36 3881Ext Api文档里面 TreeNode.reload()是没 ... -
Ext2.0的通用grid包括(增、删、改、查、导出excel)
2009-03-02 20:32 2862下面为扩张grid的 代码/** * @a ... -
ext构造自己的组件
2009-03-02 20:16 1331/*** @title:新闻中心模块* @au ... -
Ext.Window
2009-02-28 17:19 2117var winUpload = new Ext.Window( ... -
ExtJs中的树分析及实现
2009-02-27 18:12 2295<网上抄录> 首先我们来看日志分类树,这一部分我将 ... -
扩展EXTJS框架的内容检查
2009-02-27 10:36 1058Ext.apply(Ext.form.VTyp ... -
刚写的B/S高级查询界面(基于ExtJs框架)
2009-02-26 10:16 4175这几天赶着做一个B/S系统,基于ExtJs框架,从中学了不少东 ...
相关推荐
在IT行业中,"ext"通常指的是Ext JS,这是一个基于JavaScript的富客户端应用开发框架,用于构建功能丰富的Web应用程序。Ext JS提供了大量的UI组件和数据管理工具,使得开发者能够创建具有桌面应用般用户体验的Web...
一本国外牛人写的关于 ExtJS 6 的电子书 [Ext JS 6 By Example]。这份资料在 PACKT上卖 35.99 刀的,讲的很详细,例子也比较简单,容易理解,现我准备利用工作之余翻译这份文档,为自己学习加深理解,也希望能帮助更...
EXT2.0example EXT2(Second Extended File System)是Linux操作系统中最早广泛使用的日志文件系统之一。EXT2.0作为EXT2的一个版本或扩展,它在原版EXT2的基础上可能进行了某些优化或功能增强,尽管具体EXT2.0的...
Ext JS 6 By Example英文版 属于自己找了半天,结果还是发现原版中没有记录,网页上图裂的那部分是大佬自己理解加上去的,尴尬,但是还是把原版的资源放在这里吧,如果是为了翻译版网页上图裂的那部分想看原图的,...
**Ext JS 6 by Example 翻译** Ext JS 是一个功能强大的JavaScript框架,用于构建交互式的、数据驱动的Web应用程序。它提供了丰富的组件库,包括表格、图表、菜单、工具栏、窗体等,使得开发者可以快速创建复杂的...
Ext.example.msg('Done', 'Your fake data was saved!'); //自动消失 3s 后 Ext.example.msg('Done', 'Your fake data was saved!',true,3000); //说明 Ext.example.msg(标题,内容,是否自动消失,时间);
这个"Ext JS6 by Example中文版(含源码)"的资源,显然是一份关于如何使用Ext JS 6的中文教程,结合实例来帮助初学者快速上手。下面将详细探讨Ext JS 6的核心特性、重要组件以及开发实践。 1. **核心特性**: - **...
Oryx 加上 Ext 修改范例,实现在oryx上添加tab窗体
离线的EXT.NET Examples,目前EXT.NET的学习文档十分有限,本Examples能帮助你迅速上手EXT.NET,是学习EXT.NET的必备首选
学习example中的实际应用案例,如grid的拖拽和树的拖拽,可以帮助我们更好地掌握EXT 2.0的使用技巧,同时提升项目开发能力。 总之,EXT 2.0的源码和示例为开发者提供了一条深入理解EXT工作机制的路径,通过学习和...
ext 在开发网页上功能强大。ext 实例大全包含网页设计中所需用到得常用组件,如Grid,Form,Tabs等等的开发应用实例。
Ext.net 2.1.1 有dll源码和离线的官方实例 开源代码
1. **支持多种EXT文件系统**: Ext2Read不仅支持EXT2,还支持更先进的EXT3和EXT4文件系统。EXT4是目前Linux发行版广泛采用的文件系统,其特点是速度快、支持大文件和大量文件。 2. **查看与复制**: 用户可以像在...
Ext JS 6 By Example 的电子书中的 示例源代码
在Windows操作系统中,由于默认不支持Linux文件系统如EXT4,因此无法直接读取或写入EXT4格式的分区。但有一些第三方工具可以帮助我们解决这个问题,其中之一就是Ext2Fsd。Ext2Fsd是一个免费的开源软件,专门设计用于...
EXT,全称EXT JS,是一种基于JavaScript的开源前端框架,主要应用于构建富互联网应用程序(Rich Internet Applications,简称RIA)。EXT3.jar是EXT框架的一个版本,它包含EXT库的Java版本,通常用于Java Web应用程序...
在Windows操作系统中,由于文件系统不兼容性,通常无法直接访问Linux系统中的Ext3或Ext4分区。然而,有了第三方工具如Ext2Fsd,Windows用户可以实现对这些Linux文件系统的读取和写入操作。本文将详细介绍如何在...
可以读写Ext2,以Ext2方式挂载Ext3文件系统(不支持Ext3日志),不支持中文! It provides Windows NT4.0/2000/XP/2003/Vista/2008 with full access to Linux Ext2 volumes (read access andwrite access). This ...