《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS》销售排名第4,发篇ExtJS的文章(拖放树结点)庆祝下

    《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS》一书上架短短几天,就进入了互动网计算机类销售总排名第4的好成绩(见下图)。现发篇Ext JS的技术文章庆祝下。

拖放树结点

在本文将介绍TreePanel组件非常有意思的一个功能:结点拖放。要使TreePanel组件的结点可以拖放非常简单,只需要将TreePanel类的enableDD选项参数设为true即可。当然,要想实现更复杂的功能,还需要配合其他的参数和事件。

一、结点拖放的位置

拖放结点包含了两个动作,拖(drag)和放(drop)。拖很好理解,就是将结点拖起来,拖哪一个结点的效果都是一样的。不过放结点就比较复杂了。放结点可分为如下两种情况:

  • 追加(append)结点:如果将拖动的结点正好放在非叶子结点的上面,TreePanel组件会将这个结点移动到非叶子结点下面作为该结点的子结点。由于TreePanel的限制,叶子结点不能append。
  • 在同一层做上下移动(above和below):
    如果将拖动的结点放在叶子结点上,或放在非叶子结点的侧面,会将拖动结点作为兄弟结点来放置。

下面的设置将TreePanel组件设为结点可拖动状态。

var tree = new Ext.tree.TreePanel({
    el: 'div-tree',
    enableDD:true, 
    loader: new Ext.tree.TreeLoader()
});

在浏览器地址栏中输入如下的URL:
    http://localhost:8080/netdisk/tree/drapdrop.html
    当显示出树形结点时,按上面的拖动方法来拖动结点,会出现如图1、图2和图3所示的拖动效果。

        图1
【英语】结点将作为【计算机】的子结点

图2 
【英语】结点将作为【计算机】的兄弟结点,并移到【计算机】结点的前面(above拖放)


               图3 
两个叶子结点交互位置(below拖放)

二、使叶子结点可以append

在默认情况下,TreePanel规定叶子结点不允许append。不管这个限制合理还是不合理,为了保持ExtJS版本的兼容性,读者应尽量不修改ExtJS的源代码。不过有时需要在叶子结点上append。那么在这种情况下,我们可以通过TreePanel的nodedragover事件来解决。

TreePanel会在内部判断,如果结点的leaf参数为true,则会允许该结点append。了解了TreePanel禁止结点append的原理,就很容易通过nodedragover事件来解决这个问题。

在nodedragover事件方法中有一个参数,通过该参数值的target属性可以获得拖动结点放置的目标结点。并在nodedragover方法中将该结点的leaf属性值设为false,代码如下:

 

tree.on("nodedragover", function(e){
    var node = e.target;
    if(node.leaf)
        node.leaf=false;
    return true;
});

    在浏览器地址栏中输入如下的URL:

    http://localhost:8080/netdisk/tree/leafappend.html

    显示树形结构后,将某个结点拖动到叶子结点处,然后放下,就会在叶子结点下生成一个子结点,而且叶子结点的图标会变成非叶子结点的图标,如图4所示。

           图4 
使叶子结点可以append

《Android/OPhone开发完全讲义》(本书版权已输出到台湾)

 样章和目录下载
 互动网 
当当网 卓越亚马逊

《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS》

 样章下载
 互动网

 乐博Android手机客户端(新浪微博)发布

<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-16915591-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

时间: 2024-08-03 09:47:45

《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS》销售排名第4,发篇ExtJS的文章(拖放树结点)庆祝下的相关文章

《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS》样章下载

本文为原创,如需转载,请注明作者和出处,谢谢! 第1章:开发梦缘起开心网 第5章:开心桌面:完全模拟Windows桌面的开心网 第15章:移动电子相册:捕捉精彩瞬间 书中实例截图     前言      互联网的发展,就是一个不断上演奇迹的过程.10年前就开始在Internet上流行的Web应用,在见证了一个个奇迹之后,依然作为最主流的应用而雄霸 互联网.近几年,一个由国外风靡至国内的Web应用--SNS,再一次为举国上下的互联网普及大潮推波助澜.或许SNS听起来还有点陌生,但如果你连炙手 可热

人人都玩性价比 后安卓时代三星该怎么走?

[TechWeb报道]在小米华为等新锐厂商的夹击下,曾经在安卓时代初期风光无限的三星也显露出颓势,其今年第二季度的销量较去年不涨反跌.配置和价格优势不再的三星该何去何从?外媒Theverge的这篇文章或许能带给你一些思考.以下是全文内容:在过去几年间,三星的智能手机打遍天下无敌手,其销量别说一般厂商,就连苹果也望尘莫及,而其杀手锏就是性能强劲的大屏手机和一定的价格优势.但一些中国制造商也以其人之道还治其人之身,用更加廉价但性能不减的手机打得三星措手不及.智能手机市场仍在增长,但三星的智能手机销量

Android——WebView方式开发web App

       昨天接到个报酬丰厚的任务,把java新生系统做成webApp,想想蛮简单的,所以当时就装作很为难的样子答应了.            所谓Web App,用以前我那个老PM的话来说,就是在壳里面套上页面.这里的壳相当于浏览器,我要做的就是在一个Activity加载的时候,把页面同时加载进去,然后在App里面浏览就可以了.         为了实现WebApp,我们主要使用的是WebView.        首先是layout布局:    <?xml version="1.0&

ssh整合-java Web 中提交数据信息时 报错

问题描述 java Web 中提交数据信息时 报错 Entering nullPropertyValue [target=[com.shyou.action.BusinessShopAction@1178dc3, com.opensymphony.xwork2.DefaultTextProvider@cbd684], property=bShop] Error setting expression 'bShop.personCharge' with value '[Ljava.lang.Stri

EXT js现在好像很火!咋学呢》

问题描述 想 EXT 入门! 求指点! 问题补充:我的邮箱是: jiaoyanggege@163.com 谢谢大家! 解决方案 官方api和官方例子 还有谷老师当然学好ext js的基本功得扎实解决方案二:有写资料可以参考一下http://extjs.org.cn/解决方案三:资料当然很重要! 建议楼主都 练习下! 我也给你发点 文档吧!解决方案四:发过去了.你接收下解决方案五:我这有点很不错EXT 学习资料,都是我以前学习用的,你有邮箱吗?我给你发下

《Ext JS实战》——1.5 下载并配置

1.5 下载并配置 尽管下载Ext JS的过程简单,可配置一个使用Ext JS的页面却不像在HTML中引用一个文件那么简单.除了配置之外,还得了解目录的层级关系,要知道都有哪些目录以及它们的用途. 我们要做的第一件事就是得到源代码. 下载的SDK是个ZIP文件,差不多有6MB大小.后面会解释为什么这些文件会这么大.现在,把这个文件解压到一个用于专门保存JavaScript的地方.要使用Ajax,需要有一个Web服务器.我在自己的计算机上一般会配置一个本地的Apache,它是个免费的而且跨平台的W

趋势:人人都想当老大

摘要: 10月26日消息,经历了高昂带宽.高额版权费等高成本透支的视频网站,2012年似乎格局已定,不会再起太大波澜.随着版权泡沫的逐一破去,行业正走入百家争鸣的新景象.然而事实却 10月26日消息,经历了高昂带宽.高额版权费等高成本透支的视频网站,2012年似乎格局已定,不会再起太大波澜.随着版权泡沫的逐一破去,行业正走入百家争鸣的新景象.然而事实却并非如此,视频行业正走出多元化的趋势,而行业内的竞争也是暗流涌动,涌动的背后则是各大"势力"的暗中较劲,而暗中较劲中也凸显了行业的发展新

创建 MSN 界面式的 Ext JS 布局

今天开始的几篇帖子都是关于 Ext JS 布局的.伴随这一系列开始,我打算以制作一个 MSN 式的界面展开内容,也就是一个通讯器,通讯器它有展现联系人.联系人状态的地方,还有展现回话的区域.我们的目标不是实现一个消息传递系统,只是介绍其用户界面的构建过程,并有一些教学为目的的代码完成全文. 首先介绍通讯器的"联系人"区域部分,以 Ext.Window 作为容器.位于 Window 之中我会放置若干控件,控件应符合以下需求: 显示用户名称.头像和当前的状态. 可以让用户改变她当前的状态,

智能监控?并非人人都能玩得起!

"三化"是安防产业发展的主要方向,网络化.高清化已经实现普及,网络高清.硬件升级.H.265等方向也已经难出新花样,同质化问题严重.但智能化的发展却仍有很长的路要走,蕴藏巨大的市场空间.智能时代的到来将终结安防的持续恶战,实现企业.产品的个性化和差异化发展,加速行业洗牌,引领安防行业进入良性发展轨道. 智能时代不能"大跃进" 实用才是根本 纵观当今整个安防市场,各大厂商都已经陆续开始着力于智能视频监控产品的研发和生产,也由此产生了许多颇为引人注目的新概念,包括有感知