<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    最愛Java

    書山有路勤為徑,學海無涯苦作舟

    ExtJs----拖放

    先看最簡單的拖放:

    1new Ext.dd.DDProxy('block');
    2//對應的HTML部分代碼
    3<div id="block" style="background:red;">&nbsp;</div> 

    拖放組件的體系

        
    簡單來說,左面4個組件都是可以隨意拖動的。拖動起來后,直接把他們放到右面那些定義好的區域中。proxy表示可以拖動的對象,target表示拖動的目的地。

     1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
     2<HTML>
     3 <HEAD>
     4  <TITLE> New Document </TITLE>
     5        <link rel="stylesheet" type="text/css" href="ext-2.3.0/resources/css/ext-all.css" />
     6        <style type="text/css">
     7            .red-row{background-color:red!important;}
     8            .yellow-row{background-color:yellow!important;}
     9        
    </style>
    10        <script type="text/javascript" src="ext-2.3.0/adapter/ext/ext-base.js"></script>
    11        <script type="text/javascript" src="ext-2.3.0/ext-all.js"></script>
    12        <style type="text/css">
    13            HR {
    14                clear:both;
    15                visibility:hidden
    16            }

    17            .block {
    18                border:1px red solid;
    19                margin:10px;
    20                min-height:80px;
    21            }

    22            .item {
    23                border:1px green solid;
    24                background:green;
    25                float:left;
    26                margin:10px;
    27                width:50px;
    28                min-height:50px;
    29                text-align:center;
    30            }

    31        
    </style>
    32        <script type="text/javascript">
    33            Ext.onReady(function(){
    34                var proxy = new Ext.dd.DragSource('proxy',{group:'dd'});
    35
    36                proxy.afterDragDrop = function(target,e,id){
    37                    var destEl = Ext.get(id);
    38                    var srcEl = Ext.get(proxy.getEl());
    39                    srcEl.insertBefore(destEl);
    40                }
    ;
    41
    42                var target = new Ext.dd.DDTarget('target','dd');
    43            }
    );
    44        
    </script>
    45 </HEAD>
    46 <BODY>
    47    <div id="proxy" class="item">item</div>
    48    <hr/>
    49    <div id="target" class="block">
    50        <hr/>
    51    </div>
    52 </BODY>
    53</HTML>
    54
    55
    56

        在34,42行分別定義了可拖動的對象和對象存放的目標。兩者具有相同的分組標志dd。只有相同的目的地才能接受可拖放的對象。36-40行則是為拖放增加一些效果而已。

    拖放的事件
        
    startDrag, onDrag, onDragDrop, endDrag是第一類拖放事件函數,他們構成了拖放的主要過程:
            startDrag(int x, int y):開始拖放事件,參數是x和y的坐標值。
            onDrag(Event t):正在拖放事件,當拖放一個對象時觸發,參數是mousemove鼠標移動事件。
            onDragDrop(Event e, String|DragDrop[] id):正在放下事件,當一個對象放到另一個DragDrop對象上時觸發,第一個參數是mouseup鼠標放開事件,第二個參數表示drop的目標位置。如果是在POINT模式下,就會傳入目標元素的id;如果是在INTERSECT模式下,則會傳入放下目標的拖放對象數組。
            endDrag(Event e):拖放結束事件,在拖放操作結束之后觸發,參數是mouseup鼠標放開事件。
        
        onDragEnter, onDragOut, onDragOver, onInvalidDrag是第二類事件,他們細化了用戶拖動對象的過程。
            onDragEnter(Event e, String|DragDrop[] id):進入drop區域事件,拖放過程中首次觸碰到drop區域時觸發。第一個參數是mousemove鼠標移動事件,第二個參數表示drop目標位置。如果是在POINT模式下,就會傳入目標元素的id;如果是在INTERSECT模式下,則會傳入放下目標的拖放對象數組。
            onDragOut(Event e, String|DragDrop[] id):離開drop區域事件,拖放過程中從drop區域離開時觸發。第一個參數是mousemove鼠標移動事件,第二個參數表示drop目標位置。如果是在POINT模式下,就會傳入目標元素的id;如果是在INTERSECT模式下,則會傳入放下目標的拖放對象數組。
            onDragOver(Event e, String|DragDrop[] id):在drop區域中拖放移動事件,當在drop區域拖放移動時觸發。第一個參數是mousemove鼠標移動事件,第二個參數表示drop目標位置。如果是在POINT模式下,就會傳入目標元素的id;如果是在INTERSECT模式下,則會傳入放下目標的拖放對象數組。
            onInvalidDrop(Event e):不能drop事件,不在drop區域移動時觸發,參數是mousemove鼠標移動事件。

        onMouseDown和onMouseUp是第三類拖放事件函數,他們用于對原始鼠標事件進行提示,而且已經融合在前兩類拖放事件函數中了。
            onMouseDown(Event e):鼠標按下事件,參數是mousedown鼠標按下事件。
            onMouseUp(Event e):鼠標放開事件,參數是mouseup鼠標放開事件。  

    高級拖放----Basic

     1<script type="text/javascript">
     2
        Ext.onReady(function(){
     3    dd1 = new Ext.dd.DD("dd-demo-1");
     4    dd2 = new Ext.dd.DD("dd-demo-2");
     5    dd3 = new Ext.dd.DD("dd-demo-3");
     6    });
     7</
    script>
     8
     9 <BODY>
    10
        <div id="dd-demo-1" class="item"></div>
    11
        <div id="dd-demo-2" class="item"></div>
    12
        <div id="dd-demo-3" class="item"></div>
    13
     </BODY>
        
        以上是最基本的實例,創建了3個可拖動的對象。

    高級拖放----Handle
        
        
    根據以上示例,我們給三個div添加handler。

     1        <script type="text/javascript">
     2            Ext.onReady(function(){
     3                dd1 = new Ext.dd.DD("dd-demo-1");
     4                    dd1.setHandleElId("dd-handle-1a");
     5                    dd1.setHandleElId("dd-handle-1b");
     6                dd2 = new Ext.dd.DD("dd-demo-2");
     7                    dd2.setHandleElId("dd-handle-2");
     8                dd3 = new Ext.dd.DD("dd-demo-3");
     9                    dd3.setOuterHandleElId("dd-handler-3");
    10            }
    );
    11        
    </script>
    12 </HEAD>
    13 <BODY>
    14    <div id="dd-demo-1" class="item">
    15        <div id="dd-handle-1a" class="block">H1</div>
    16        <div id="dd-handle-1b" class="block">H2</div>
    17    </div>
    18    <div id="dd-demo-2" class="item">
    19        <div id="dd-handle-2" class="block">H</div>
    20    </div>
    21    <div id="dd-handler-3" class="item">Outer</div>
    22    <div id="dd-demo-3" class="item"></div>
    23 </BODY>
    24


    高級拖放----On Top

     1//為OnTop重寫監聽拖放事件的函數
     2Ext.ux.DDOnTop = function(id, sGroup, config) {
     3    Ext.ux.DDOnTop.superclass.constructor.apply(this, arguments);
     4};
     5
     6Ext.extends(Ext.ux.DDOnTop, Ext.dd.DD, {
     7    origZ:0,
     8
     9    startDrag:function(x,y){
    10        var style = this.getEl().style;
    11        this.origZ = style.zIndex;
    12        style.zIndex = 999;
    13    },
    14    endDrag:function(e) {
    15        this.getEl().style.zIndex = this.origZ;
    16    }
    17});

        然后只要創建Ext.ux.DDOnTop的對象就可以了。

    高級拖放----Proxy
        
    所謂代理(Proxy),就是拖放時原div不動,跟隨鼠標移動的是一個名為Proxy的拖放。如果需要拖動的對象十分復雜,每次都讓它跟隨鼠標移動,很可能會使瀏覽器負荷過大,甚至出現頁面停頓的現象。這時就需要使用代理來避免重復渲染復雜對象。
        為了使用代理,最簡單的方法就是把原來的Ext.dd.DD改成Ext.dd.DDProxy,如:
             dd1 = new Ext.dd.DDProxy("dd-demo-1");
        這樣就會出現一個只有外框的空白Proxy,如果我們希望自定義Proxy的形式,也可以制作,如:
            dd3 = new Ext.dd.DDProxy("dd-demo-3","default",{
                dragElId : "dd-demo-3-proxy",
                resizeFrame : false
            });
        為了實現自定義Proxy,我們在創建DDProxy時需要設置3個參數。第一個參數是對應的div的id;第二個參數是拖放的組,只有同組的Drag才能放到同組的Drop上;第三個參數是附加參數。
        dragElId的值是我們自定義的proxy,而resizeFrame : false告訴EXT不用使proxy的大小與原div一樣。
        為了使proxy與dd-demo-3對應,我們還需要在HTML中加入:
            <div id="dd-demo-proxy">proxy-3</div>

    高級拖放----Grid

    1dd1 = new Ext.dd.DD("dragDiv1");
    2dd1.setXConstraint(1000,1000,25
    );
    3dd1.setYConstraint(1000,1000,25);

        注意setXConstraint()和setYConstraint()兩個方法,其所帶的參數表示左側/上側最遠距離,右側/下側最遠距離,每次移動距離。
       

    posted on 2009-10-23 23:42 Brian 閱讀(3119) 評論(0)  編輯  收藏 所屬分類: JScript

    公告


    導航

    <2009年10月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統計

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    收藏夾

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品福利网站| 亚洲va久久久噜噜噜久久狠狠| 亚洲国产精品免费在线观看| 久久综合给合久久国产免费| 亚洲精品~无码抽插| 久久美女网站免费| 亚洲日韩精品一区二区三区 | 久久久久久国产精品免费无码| 中文字幕在线亚洲精品| 国产精品九九久久免费视频| 国产专区一va亚洲v天堂| gogo免费在线观看| 亚洲国产精品一区第二页| 午夜免费啪视频在线观看| 亚洲精品免费在线视频| 成年女人18级毛片毛片免费| 国产亚洲男人的天堂在线观看| 亚洲精品成人久久久| 好紧我太爽了视频免费国产| 亚洲国产精品日韩在线观看| 日韩成人免费aa在线看| 一级女人18片毛片免费视频| 亚洲国产精品无码久久久秋霞2 | 免费A级毛片无码久久版| 黄色视屏在线免费播放| 亚洲福利视频导航| 日韩欧美一区二区三区免费观看| 亚洲一卡一卡二新区无人区 | 亚洲毛片在线观看| 无码专区永久免费AV网站 | 亚洲成在人线在线播放无码| 亚洲av无码成人精品区| 国产啪精品视频网站免费尤物 | 免费午夜爽爽爽WWW视频十八禁| 国产免费AV片在线观看播放| 久久亚洲AV成人无码软件| 国产免费观看黄AV片| 波多野结衣免费一区视频| 亚洲乱妇老熟女爽到高潮的片| 国产精品亚洲w码日韩中文| 亚洲免费网站在线观看|