`
lingyibin
  • 浏览: 199464 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Extjs复习笔记(十九)-- XML作为tree的数据源

阅读更多

用XML来作为tree的数据源



 所有文件都上传了

 

//
// Extend the XmlTreeLoader to set some custom TreeNode attributes specific to our application:
//
Ext.app.BookLoader = Ext.extend(Ext.ux.tree.XmlTreeLoader, { //XmlTreeLoader是ux/XmlTreeLoader.js里面定义的类,可以直接拿去用
	/*
     * processAttributes:Template method intended to be overridden by subclasses that need to provide
     * custom attribute processing prior to the creation of each TreeNode.  This method
     * will be passed a config object containing existing TreeNode attribute name/value
     * pairs which can be modified as needed directly (no need to return the object).
     */
    processAttributes : function(attr){
        if(attr.first){ // is it an author node? //author node指的是根结点的了结点,本例中,第二层结点都是作者author,第三层都是作者写的书,具体看下面附上的xml文档内容

            // Set the node text that will show in the tree since our raw data does not include a text attribute:
            attr.text = attr.first + ' ' + attr.last; //first和last都是author的属性

            // Author icon, using the gender flag to choose a specific icon:
            attr.iconCls = 'author-' + attr.gender;

            // Override these values for our folder nodes because we are loading all data at once.  If we were
            // loading each node asynchronously (the default) we would not want to do this:
            attr.loaded = true; //一次性加载所有相关数据
            attr.expanded = true;
        }
        else if(attr.title){ // is it a book node?

            // Set the node text that will show in the tree since our raw data does not include a text attribute:
            attr.text = attr.title + ' (' + attr.published + ')';

            // Book icon:
            attr.iconCls = 'book';

            // Tell the tree this is a leaf node.  This could also be passed as an attribute in the original XML,
            // but this example demonstrates that you can control this even when you cannot dictate the format of
            // the incoming source XML:
            attr.leaf = true; //这是叶结点
        }
    }
});

Ext.onReady(function(){

    var detailsText = '<i>Select a book to see more information...</i>';

	var tpl = new Ext.Template(
        '<h2 class="title">{title}</h2>',
        '<p><b>Published</b>: {published}</p>',
        '<p><b>Synopsis</b>: {innerText}</p>',
        '<p><a href="{url}" target="_blank">Purchase from Amazon</a></p>'
	);
    tpl.compile();

    new Ext.Panel({
        title: 'Reading List',
	    renderTo: 'tree',
        layout: 'border',
	    width: 500,
        height: 500,
        items: [{
            xtype: 'treepanel',
            id: 'tree-panel',
            region: 'center',
            margins: '2 2 0 2', //这个属性不错,可以加以利用
            autoScroll: true,
	        rootVisible: false,
	        root: new Ext.tree.AsyncTreeNode(), //异步加载

            // Our custom TreeLoader:
	        loader: new Ext.app.BookLoader({
	            dataUrl:'xml-tree-data.xml'
	        }),

	        listeners: {
	            'render': function(tp){ //在 render 事件中给 treePanel 加上 selectionchange 事件
                    tp.getSelectionModel().on('selectionchange', function(tree, node){
                        var el = Ext.getCmp('details-panel').body; //details-panel其实是一个div,在下面定义, 这边打算“重写”这个div里面的内容
	                    if(node && node.leaf){ //如果被选中了,而且选中的是叶子结点
	                        tpl.overwrite(el, node.attributes);
	                    }else{
                            el.update(detailsText);
                        }
                    })
	            }
	        }
        },{
            region: 'south',
            title: 'Book Details',
            id: 'details-panel',
            autoScroll: true,
            collapsible: true,
            split: true,
            margins: '0 2 2 2',
            cmargins: '2 2 2 2', //设定页边空白 
            height: 220,
            html: detailsText
        }]
    });
});

 

其中涉及到margins 和 cmargins,区别如下:

cmargins : Object //页边空白
An object containing margins to apply to the region's collapsed element in the format {left: (left margin), top: (top margin), right: (right margin), bottom: (bottom margin)}

margins : Object //组件间的相对距离
An object containing margins to apply to the region in the format {left: (left margin), top: (top margin), right: (right margin), bottom: (bottom margin)}

 

附:xml-tree-data.xml

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<authors>
    <author first="Fyodor" last="Dostoevsky" gender="m">
        <book title="Crime and Punishment" published="1866" url="http://www.amazon.com/Crime-Punishment-Fyodor-Dostoevsky/dp/0679734503/">
            Raskolnikov, a destitute and desperate former student, commits a random murder without remorse or regret, imagining himself to be a great man far above moral law. But as he embarks on a dangerous cat-and-mouse game with a suspicious police investigator, his own conscience begins to torment him. 
        </book>
        <book title="The Brothers Karamazov" published="1879" url="http://www.amazon.com/Brothers-Karamazov-Fyodor-Dostoevsky/dp/0374528373/">
            Driven by intense, uncontrollable emotions of rage and revenge, the Karamozov brothers become involved in the brutal murder of their despicable father. It is a love-hate struggle with profound psychological and spiritual implications.
        </book>
    </author>
    <author first="Stephen" last="King" gender="m">
        <book title="The Shining" published="1977" url="http://www.amazon.com/Shining-Stephen-King/dp/0743424425/">
            An alcoholic man, his wife, and his psychic son go to a large haunted hotel for the winter, where the child is threatened by supernatural and family dangers.
        </book>
        <book title="Cujo" published="1981" url="http://www.amazon.com/Cujo-Signet-Stephen-King/dp/0451161351/">
            A big, friendly dog chases a rabbit into a hidden underground cave and stirs a sleeping evil crueler than death itself. The little Maine town of Castle Rock is about to be invaded by the most hideous menace ever to savage the flesh and devour the mind.
        </book>
        <book title="IT" published="1986" url="http://www.amazon.com/Signet-Books-Stephen-King/dp/0451169514/">
            They were seven teenagers when they first stumbled upon the horror. Now they were grown-up men and women who had gone out into the big world to gain success and happiness. But none of them could withstand the force that drew them back to Derry, Maine to face the nightmare without an end, and the evil without a name.
        </book>
    </author>
    <author first="J.K." last="Rowling" gender="f">
        <book title="Harry Potter and the Sorcerer's Stone" published="1997" url="http://www.amazon.com/Harry-Potter-Sorcerers-Stone-Book/dp/043936213X/">
            All Harry Potter knows is a miserable life with the Dursleys, his horrible aunt and uncle, and their abominable son, Dudley. But all that is about to change when a mysterious letter arrives by owl messenger: a letter with an invitation to a wonderful place he never dreamed existed.
        </book>
        <book title="Harry Potter and the Chamber of Secrets" published="1998" url="http://www.amazon.com/Harry-Potter-Chamber-Secrets-Book/dp/0439064864/">
            Someone - or something - starts turning Hogwarts students to stone. Could it be Draco Malfoy, a more poisonous rival than ever? Could it possibly be Hagrid, whose mysterious past is finally told? Or could it be the one everyone at Hogwarts most suspects... Harry Potter himself!
        </book>
        <book title="Harry Potter and the Prisoner of Azkaban" published="1999" url="http://www.amazon.com/Harry-Potter-Prisoner-Azkaban-Book/dp/043965548X/">
            For Twelve long years, the dread fortress of Azkaban held an infamous prisoner named Sirius Black. Now he has escaped, and the Azkaban guards heard Black muttering in his sleep, "He's at Hogwarts..." Harry Potter isn't safe, not even within the walls of his magical school. Because on top of it all, there may well be a traitor in their midst.
        </book>
    </author>
</authors>
  • 大小: 32.4 KB
  • 大小: 32.4 KB
分享到:
评论

相关推荐

    ext经典资料学习—201012

    6. **Ext.data.Store**:Store是EXTJS中存储数据的核心组件,它可以连接到各种数据源,如JSON、XML或远程HTTP服务。Store负责管理数据集的加载、刷新和更新。 7. **Ext.data.JsonReader**:JsonReader是EXTJS用来...

    DotNet+Ext入门

    在数据管理方面,`Ext.data.Store` 是存储数据的核心组件,它可以连接到各种数据源,如 JSON 文件、XML 或数据库。`JsonReader` 和 `HttpProxy` 分别负责解析 JSON 数据和与服务器进行 HTTP 请求,它们是数据绑定的...

    第五讲电子商务安全.ppt

    第五讲电子商务安全.ppt

    运用Matlab的LBP算法实现面部表情识别与特征分割 图像处理 指南

    内容概要:本文探讨了利用Matlab和LBP(局部二值模式)算法进行面部表情识别的技术。首先介绍了Matlab作为一种强大工具,在科学计算和图像处理领域的广泛应用背景。接着详细阐述了LBP算法的工作原理及其在图像分析中的优势,特别是对于描述图像局部纹理特征的能力。随后重点讲解了LBP算法在脸部特征分割中的具体步骤,包括图像预处理、特征提取以及最终的表情识别过程。通过对一系列实验数据的分析,证明了这种方法的有效性和准确性。 适合人群:从事计算机视觉、图像处理相关工作的研究人员和技术爱好者。 使用场景及目标:适用于需要对面部表情进行自动识别的应用场合,如安防监控、人机交互系统等。目标在于提供一种高效可靠的面部表情识别解决方案。 其他说明:文中提到的LBP算法不仅能够很好地捕捉到人脸的关键部位特征,而且还能有效地减少噪声干扰,提高了识别率。此外,作者还展望了未来可能的研究方向,比如优化现有算法以提升性能表现。

    MATLAB微网优化调度:两阶段鲁棒CCG算法经济调度的详细研究 说明

    内容概要:本文深入探讨了基于MATLAB的微网优化调度,特别是采用两阶段鲁棒优化模型和CCG算法来实现经济调度。通过构建min-max-min结构的两阶段鲁棒优化模型,考虑储能、需求侧负荷及可控分布式电源的运行约束和协调控制,并引入不确定性调节参数,使调度方案能够适应不同场景。利用列约束生成算法和强对偶理论,将原问题分解为主问题和子问题交替求解,提高了求解效率。最终,在MATLAB平台上利用YALMIP工具箱调用CPLEX求解器进行了仿真分析,验证了模型和算法的有效性。 适合人群:从事电力系统优化调度的研究人员和技术人员,尤其是对微网优化调度感兴趣的学者和工程师。 使用场景及目标:适用于需要优化微网调度策略,降低成本并提高能源利用效率的实际应用场景。目标是在最恶劣场景下找到运行成本最低的调度方案,同时确保系统的稳定性。 其他说明:本文提供的代码注释详实,出图效果好,适合用于教学和科研项目。

    工业自动化中昆仑通态触摸屏控制ABB变频器的技术实现与应用

    内容概要:本文详细介绍了昆仑通态触摸屏控制ABB变频器的技术实现过程及其应用场景。首先简述了昆仑通态触摸屏技术和ABB变频器的基本概念,接着重点讲解了两者之间的硬件连接和软件编程方法,包括具体的代码示例。文中还探讨了该技术在多个行业的广泛应用及其带来的诸多优势,如操作简便、节能高效等。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对触摸屏控制技术和变频器有研究兴趣的人士。 使用场景及目标:适用于机械制造、化工、纺织、食品加工等多个行业,旨在提升生产线的自动化水平,优化设备操作流程,达到节能增效的目的。 其他说明:随着工业自动化的快速发展,此类技术将在更多领域得到推广和应用。文中提供的代码片段有助于读者快速上手实践,加深对该技术的理解。

    “终极版本的asdf文件压缩包”

    假设使用一个带权有向图来表示某地区的公交线路网络,图中的顶点对应区域内的重要站点,有向边代表已开通的公交线路,边上的权重则表示乘坐该线路的票价或所需时间。在此基础上,设计一款交通指南系统,为使用者提供从该区域内的一个站点出发,以最低票价或最短时间到达另一个站点的最优路径指导。

    《高校校园网络系统全面规划方案》

    本项目旨在构建一个校园网络系统,覆盖教学楼、实验楼、科教楼、图书馆、男生宿舍、女生宿舍以及行政楼等六栋建筑。该网络将搭建校园内部的局域网(INTRANET),并具备接入中国教育和科研计算机网(CERNET)与中国公用计算机互联网(CHINANET)的能力。通过该网络系统,可实现多媒体教学、教学管理、办公自动化、远程教育以及连接因特网等多项功能。项目附带了相应的pkt文件,文档内容完整,可直接投入使用。

    伟创SD600伺服EtherCAT系统电路图、代码及使用说明

    内容概要:本文档详细介绍了伟创SD600方案伺服EtherCAT系统的电路图、代码以及使用说明。首先,提供了电路图,展示设备的电气连接和组件布局,作为安装、调试和维护的基础。其次,解释了关键代码的功能,包括初始化、控制、诊断和通信代码,确保设备正常运行。最后,给出了详细的使用说明,涵盖设备安装、参数设置、调试步骤和维护保养方法,并强调了操作的安全性和规范性。 适合人群:从事工业自动化领域的工程师和技术人员,特别是那些需要理解和操作伟创SD600伺服EtherCAT系统的人员。 使用场景及目标:适用于设备的初次安装、日常调试、参数调整和故障排查。目标是帮助用户掌握设备的操作流程,确保设备的高效、安全运行。 其他说明:文档还特别提醒用户在操作过程中严格遵守说明书的要求,以防止误操作带来的风险。遇到问题时,建议及时联系厂家或专业人员寻求帮助。

    FPGA UART串口通信Verilog源码实现及其应用

    内容概要:本文介绍了基于FPGA的UART串口通信的Verilog源码实现方法,重点讲解了如何通过Verilog HDL描述UART的硬件结构与行为,支持自定义配置波特率、数据位和校验位等功能。文章详细解析了UART模块的设计流程,包括模块定义、波特率与数据位控制、发送与接收逻辑等方面的内容。同时探讨了该UART模块的实际应用场景,如嵌入式系统和工业控制等领域,并提出了增加调试和测试功能的方法以提升系统性能。 适合人群:对FPGA和Verilog有一定了解的硬件工程师、嵌入式开发者和技术爱好者。 使用场景及目标:① 学习如何用Verilog编写UART模块;② 掌握UART通信的基本原理和实现方式;③ 将UART模块应用于实际项目中,如嵌入式系统和工业控制系统。 其他说明:文章不仅提供了详细的代码示例,还强调了在实际应用中需要注意的各种因素,如硬件资源、通信速度和可靠性等。

    基于Excel和Python的SVN冲突解决与Json配置系统.zip

    基于Excel和Python的SVN冲突解决与Json配置系统.zip

    组态02 红红火火恍恍惚惚哈哈哈哈

    组态02

    软件测试计划书.docx

    软件测试计划书.docx

    综合应用基于遥感和GIS的土地适宜性评价研究硕.ppt

    综合应用基于遥感和GIS的土地适宜性评价研究硕.ppt

    《软件测试详细报告模板(实用完美版)》

    编写目的:测试报告的核心目标是总结测试周期的活动与结果,判断系统是否符合需求。它为用户提供全面视角,展示测试发现的问题、解决方式及系统现状。 项目背景:简要介绍项目,包括发起原因、目标客户和技术栈等,帮助读者理解测试背景。 列出测试过程中使用的关键文档,如需求规格说明书、设计文档和测试计划等,确保各方能获取一致的参考信息。 定义文档中的专业术语和缩写,避免误解,确保所有人员准确理解报告内容。 概述测试的整体框架,包括目的、范围和方法论,同时提及基本假设,如需求文档的准确性和资源可用性。 设计原则:测试用例需与需求项直接关联,且随需求变化动态调整。 设计方法:采用等价类划分、边界值分析和因果图等方法,设计覆盖关键场景的测试用例。 详细描述测试环境的硬件、软件和网络配置,以便复现测试结果。 介绍测试过程中使用的方法和技术,以及相关工具,如自动化测试工具和性能测试工具。 功能测试:验证系统功能模块是否按预期工作,包括冒烟测试等快速检查。 性能测试:评估系统在不同负载下的表现,关注响应时间和吞吐量等指标。 可靠性测试:模拟实际使用场景,评估系统稳定性。 安全性测试:检查系统是否存在安全漏洞,确保数据安全。 兼容性测试:验证系统在不同环境(如操作系统、浏览器)下的运行情况。 易用性测试:评估用户体验,确保界面直观易用。 覆盖分析:分析测试覆盖程度,识别未覆盖区域。 缺陷汇总:记录测试中发现的所有缺陷,包括严重性和优先级信息。 缺陷分析:对缺陷进行分类和趋势分析,找出根本原因。 残留缺陷与未解决问题:列出未解决的问题及其对系统的影响。 测试结论:基于测试结果,判断系统是否符合发布条件。 建议:提出改进建议,帮助团队避免未来类似问题。 这份测试报告模板结构清晰,内容全面,细节丰富,非常适合指导软件测试项目的实施。

    通信工程施工管理规范发布分析.doc

    通信工程施工管理规范发布分析.doc

    新能源汽车上位机诊断与BMS检测软件包及其应用技巧

    内容概要:本文详细介绍了云度新能源电动汽车的全套上位机诊断与BMS检测软件包,涵盖80余款支持多种品牌车型的诊断工具。文中不仅列举了各品牌如宁德时代、北汽、江淮等的具体应用场景,还分享了实际操作中的经验和技巧,如不同品牌的CAN ID解析方法、USBCAN卡配置注意事项以及一些软件的隐藏功能和破解方法。此外,作者还提到了不同操作系统环境下软件使用的兼容性问题。 适合人群:从事新能源汽车维修、诊断的技术人员,尤其是对BMS系统有研究兴趣的专业人士。 使用场景及目标:帮助技术人员更好地理解和使用各种品牌的新能源汽车诊断软件,提高工作效率,避免常见错误。同时,也为解决特定品牌车辆的疑难杂症提供了实用的操作指南。 阅读建议:由于涉及到大量具体的车型和技术细节,建议读者在阅读过程中结合自身的工作背景和需求重点学习相关内容,并注意保护知识产权,合法合规地使用所介绍的方法和工具。

    「机器人研究数模实验方案LQR控制:m函数调用simulink中的控制算法,在simscape Multibody中的物理模型中测试,节省时间的方法适用于机械臂、无人机和无人车的镇定与轨迹追踪控制算法

    内容概要:本文详细介绍了LQR(Linear Quadratic Regulator)控制算法在机器人研究中的应用,特别是针对机械臂、无人机和无人车的仿真测试。文章首先概述了LQR控制算法的基本原理及其相对于传统PID控制的优势,然后逐步讲解了从模型准备、m函数编写、Simulink模型搭建到最后的物理模型测试的具体步骤。文中强调了LQR控制算法在处理多变量、多约束复杂系统时的优越性能,并提供了具体的实验方案和代码关键点解析。最终,通过对实验结果的观察和分析,展示了LQR控制算法的有效性和广泛适用性。 适合人群:从事机器人研究的技术人员,尤其是对控制算法有一定了解的研究人员和工程师。 使用场景及目标:①希望深入了解LQR控制算法的工作原理和技术细节;②掌握如何在Simulink和Simscape Multibody中实现LQR控制算法;③提升机器人系统如机械臂、无人机和无人车的控制精度和稳定性。 其他说明:虽然LQR控制算法的实现较为复杂,但通过本文提供的详细指导,可以帮助研究人员更快捷地完成仿真测试,从而节省大量时间和精力。

    通信工程资源录入措施.doc

    通信工程资源录入措施.doc

Global site tag (gtag.js) - Google Analytics