亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dataview.js

?? 一個struts和extjs得源碼
?? JS
?? 第 1 頁 / 共 2 頁
字號:
        startIndex = startIndex || 0;
        endIndex = endIndex || ((endIndex === 0) ? 0 : (ns.length - 1));
        for(var i = startIndex; i <= endIndex; i++){
            ns[i].viewIndex = i;
        }
    },
    
    /**
     * Returns the store associated with this DataView.
     * @return {Ext.data.Store} The store
     */
    getStore : function(){
        return this.store;
    },

    /**
     * Changes the data store bound to this view and refreshes it.
     * @param {Store} store The store to bind to this view
     */
    setStore : function(store, initial){
        if(!initial && this.store){
            this.store.un("beforeload", this.onBeforeLoad, this);
            this.store.un("datachanged", this.refresh, this);
            this.store.un("add", this.onAdd, this);
            this.store.un("remove", this.onRemove, this);
            this.store.un("update", this.onUpdate, this);
            this.store.un("clear", this.refresh, this);
        }
        if(store){
            store = Ext.StoreMgr.lookup(store);
            store.on("beforeload", this.onBeforeLoad, this);
            store.on("datachanged", this.refresh, this);
            store.on("add", this.onAdd, this);
            store.on("remove", this.onRemove, this);
            store.on("update", this.onUpdate, this);
            store.on("clear", this.refresh, this);
        }
        this.store = store;
        if(store){
            this.refresh();
        }
    },

    /**
     * Returns the template node the passed child belongs to, or null if it doesn't belong to one.
     * @param {HTMLElement} node
     * @return {HTMLElement} The template node
     */
    findItemFromChild : function(node){
        return Ext.fly(node).findParent(this.itemSelector, this.el);
    },

    // private
    onClick : function(e){
        var item = e.getTarget(this.itemSelector, this.el);
        if(item){
            var index = this.indexOf(item);
            if(this.onItemClick(item, index, e) !== false){
                this.fireEvent("click", this, index, item, e);
            }
        }else{
            if(this.fireEvent("containerclick", this, e) !== false){
                this.clearSelections();
            }
        }
    },

    // private
    onContextMenu : function(e){
        var item = e.getTarget(this.itemSelector, this.el);
        if(item){
            this.fireEvent("contextmenu", this, this.indexOf(item), item, e);
        }
    },

    // private
    onDblClick : function(e){
        var item = e.getTarget(this.itemSelector, this.el);
        if(item){
            this.fireEvent("dblclick", this, this.indexOf(item), item, e);
        }
    },

    // private
    onMouseOver : function(e){
        var item = e.getTarget(this.itemSelector, this.el);
        if(item && item !== this.lastItem){
            this.lastItem = item;
            Ext.fly(item).addClass(this.overClass);
            this.fireEvent("mouseenter", this, this.indexOf(item), item, e);
        }
    },

    // private
    onMouseOut : function(e){
        if(this.lastItem){
            if(!e.within(this.lastItem, true, true)){
                Ext.fly(this.lastItem).removeClass(this.overClass);
                this.fireEvent("mouseleave", this, this.indexOf(this.lastItem), this.lastItem, e);
                delete this.lastItem;
            }
        }
    },

    // private
    onItemClick : function(item, index, e){
        if(this.fireEvent("beforeclick", this, index, item, e) === false){
            return false;
        }
        if(this.multiSelect){
            this.doMultiSelection(item, index, e);
            e.preventDefault();
        }else if(this.singleSelect){
            this.doSingleSelection(item, index, e);
            e.preventDefault();
        }
        return true;
    },

    // private
    doSingleSelection : function(item, index, e){
        if(e.ctrlKey && this.isSelected(index)){
            this.deselect(index);
        }else{
            this.select(index, false);
        }
    },

    // private
    doMultiSelection : function(item, index, e){
        if(e.shiftKey && this.last !== false){
            var last = this.last;
            this.selectRange(last, index, e.ctrlKey);
            this.last = last; // reset the last
        }else{
            if((e.ctrlKey||this.simpleSelect) && this.isSelected(index)){
                this.deselect(index);
            }else{
                this.select(index, e.ctrlKey || e.shiftKey || this.simpleSelect);
            }
        }
    },

    /**
     * Gets the number of selected nodes.
     * @return {Number} The node count
     */
    getSelectionCount : function(){
        return this.selected.getCount()
    },

    /**
     * Gets the currently selected nodes.
     * @return {Array} An array of HTMLElements
     */
    getSelectedNodes : function(){
        return this.selected.elements;
    },

    /**
     * Gets the indexes of the selected nodes.
     * @return {Array} An array of numeric indexes
     */
    getSelectedIndexes : function(){
        var indexes = [], s = this.selected.elements;
        for(var i = 0, len = s.length; i < len; i++){
            indexes.push(s[i].viewIndex);
        }
        return indexes;
    },

    /**
     * Gets an array of the selected records
     * @return {Array} An array of {@link Ext.data.Record} objects
     */
    getSelectedRecords : function(){
        var r = [], s = this.selected.elements;
        for(var i = 0, len = s.length; i < len; i++){
            r[r.length] = this.store.getAt(s[i].viewIndex);
        }
        return r;
    },

    /**
     * Gets an array of the records from an array of nodes
     * @param {Array} nodes The nodes to evaluate
     * @return {Array} records The {@link Ext.data.Record} objects
     */
    getRecords : function(nodes){
        var r = [], s = nodes;
        for(var i = 0, len = s.length; i < len; i++){
            r[r.length] = this.store.getAt(s[i].viewIndex);
        }
        return r;
    },

    /**
     * Gets a record from a node
     * @param {HTMLElement} node The node to evaluate
     * @return {Record} record The {@link Ext.data.Record} object
     */
    getRecord : function(node){
        return this.store.getAt(node.viewIndex);
    },

    /**
     * Clears all selections.
     * @param {Boolean} suppressEvent (optional) True to skip firing of the selectionchange event
     */
    clearSelections : function(suppressEvent, skipUpdate){
        if((this.multiSelect || this.singleSelect) && this.selected.getCount() > 0){
            if(!skipUpdate){
                this.selected.removeClass(this.selectedClass);
            }
            this.selected.clear();
            this.last = false;
            if(!suppressEvent){
                this.fireEvent("selectionchange", this, this.selected.elements);
            }
        }
    },

    /**
     * Returns true if the passed node is selected, else false.
     * @param {HTMLElement/Number} node The node or node index to check
     * @return {Boolean} True if selected, else false
     */
    isSelected : function(node){
        return this.selected.contains(this.getNode(node));
    },

    /**
     * Deselects a node.
     * @param {HTMLElement/Number} node The node to deselect
     */
    deselect : function(node){
        if(this.isSelected(node)){
            node = this.getNode(node);
            this.selected.removeElement(node);
            if(this.last == node.viewIndex){
                this.last = false;
            }
            Ext.fly(node).removeClass(this.selectedClass);
            this.fireEvent("selectionchange", this, this.selected.elements);
        }
    },

    /**
     * Selects a set of nodes.
     * @param {Array/HTMLElement/String/Number} nodeInfo An HTMLElement template node, index of a template node,
     * id of a template node or an array of any of those to select
     * @param {Boolean} keepExisting (optional) true to keep existing selections
     * @param {Boolean} suppressEvent (optional) true to skip firing of the selectionchange vent
     */
    select : function(nodeInfo, keepExisting, suppressEvent){
        if(Ext.isArray(nodeInfo)){
            if(!keepExisting){
                this.clearSelections(true);
            }
            for(var i = 0, len = nodeInfo.length; i < len; i++){
                this.select(nodeInfo[i], true, true);
            }
	        if(!suppressEvent){
	            this.fireEvent("selectionchange", this, this.selected.elements);
	        }
        } else{
            var node = this.getNode(nodeInfo);
            if(!keepExisting){
                this.clearSelections(true);
            }
            if(node && !this.isSelected(node)){
                if(this.fireEvent("beforeselect", this, node, this.selected.elements) !== false){
                    Ext.fly(node).addClass(this.selectedClass);
                    this.selected.add(node);
                    this.last = node.viewIndex;
                    if(!suppressEvent){
                        this.fireEvent("selectionchange", this, this.selected.elements);
                    }
                }
            }
        }
    },

    /**
     * Selects a range of nodes. All nodes between start and end are selected.
     * @param {Number} start The index of the first node in the range
     * @param {Number} end The index of the last node in the range
     * @param {Boolean} keepExisting (optional) True to retain existing selections
     */
    selectRange : function(start, end, keepExisting){
        if(!keepExisting){
            this.clearSelections(true);
        }
        this.select(this.getNodes(start, end), true);
    },

    /**
     * Gets a template node.
     * @param {HTMLElement/String/Number} nodeInfo An HTMLElement template node, index of a template node or the id of a template node
     * @return {HTMLElement} The node or null if it wasn't found
     */
    getNode : function(nodeInfo){
        if(typeof nodeInfo == "string"){
            return document.getElementById(nodeInfo);
        }else if(typeof nodeInfo == "number"){
            return this.all.elements[nodeInfo];
        }
        return nodeInfo;
    },

    /**
     * Gets a range nodes.
     * @param {Number} start (optional) The index of the first node in the range
     * @param {Number} end (optional) The index of the last node in the range
     * @return {Array} An array of nodes
     */
    getNodes : function(start, end){
        var ns = this.all.elements;
        start = start || 0;
        end = typeof end == "undefined" ? Math.max(ns.length - 1, 0) : end;
        var nodes = [], i;
        if(start <= end){
            for(i = start; i <= end && ns[i]; i++){
                nodes.push(ns[i]);
            }
        } else{
            for(i = start; i >= end && ns[i]; i--){
                nodes.push(ns[i]);
            }
        }
        return nodes;
    },

    /**
     * Finds the index of the passed node.
     * @param {HTMLElement/String/Number} nodeInfo An HTMLElement template node, index of a template node or the id of a template node
     * @return {Number} The index of the node or -1
     */
    indexOf : function(node){
        node = this.getNode(node);
        if(typeof node.viewIndex == "number"){
            return node.viewIndex;
        }
        return this.all.indexOf(node);
    },

    // private
    onBeforeLoad : function(){
        if(this.loadingText){
            this.clearSelections(false, true);
            this.el.update('<div class="loading-indicator">'+this.loadingText+'</div>');
            this.all.clear();
        }
    },

    onDestroy : function(){
        Ext.DataView.superclass.onDestroy.call(this);
        this.setStore(null);
    }
});

Ext.reg('dataview', Ext.DataView);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品视频你懂的| 懂色av噜噜一区二区三区av| 激情成人午夜视频| 色婷婷国产精品综合在线观看| 日韩欧美成人一区| 亚洲一级二级在线| 丁香婷婷综合色啪| 欧美精品一区二区三区高清aⅴ| 亚洲欧美日韩在线不卡| 国产酒店精品激情| 日韩视频一区二区| 五月天一区二区三区| 色琪琪一区二区三区亚洲区| 久久精品视频在线看| 青青草原综合久久大伊人精品优势| 91在线观看高清| 中文字幕精品三区| 国产99久久久国产精品潘金| 欧美成va人片在线观看| 日韩综合在线视频| 欧美视频在线播放| 亚洲精品视频一区二区| 成人免费av网站| 国产欧美日韩视频一区二区| 狠狠色丁香久久婷婷综合丁香| 337p亚洲精品色噜噜噜| 亚洲一区二区av在线| 欧美私模裸体表演在线观看| 亚洲黄网站在线观看| 91网站最新网址| 1区2区3区欧美| 91老司机福利 在线| 亚洲黄色尤物视频| 欧美性受xxxx黑人xyx性爽| 一区二区高清视频在线观看| 色女孩综合影院| 一区二区免费在线| 欧美精品日韩综合在线| 日韩精品欧美成人高清一区二区| 欧美日产国产精品| 日本不卡一区二区三区高清视频| 欧美一区二区三区视频在线观看 | 美女一区二区三区在线观看| 欧美丰满高潮xxxx喷水动漫| 三级欧美在线一区| 欧美草草影院在线视频| 国产成a人亚洲精| 综合激情成人伊人| 欧美日韩国产首页| 九九国产精品视频| 国产精品国产三级国产a| av网站免费线看精品| 一区二区三区波多野结衣在线观看| 欧美日韩精品综合在线| 日韩不卡一区二区| 久久视频一区二区| 91农村精品一区二区在线| 亚洲国产另类av| 久久亚洲欧美国产精品乐播| 91在线观看视频| 日韩精品国产精品| 久久久久国产免费免费| 欧美在线视频全部完| 久久精品国产精品亚洲综合| 中文字幕一区二区三中文字幕| 欧美性生交片4| 国产在线精品一区二区夜色| 中文字幕一区二区三区蜜月| 欧美人体做爰大胆视频| 国产精品1024| 亚洲sss视频在线视频| 国产清纯白嫩初高生在线观看91| 色婷婷久久久综合中文字幕| 精品在线播放免费| 亚洲图片有声小说| 国产欧美久久久精品影院| 91麻豆精品久久久久蜜臀| 成人黄色av网站在线| 日韩电影一区二区三区| 国产精品你懂的在线欣赏| 日韩丝袜情趣美女图片| 色偷偷久久人人79超碰人人澡| 久久www免费人成看片高清| 玉米视频成人免费看| 久久综合成人精品亚洲另类欧美| 欧美主播一区二区三区| 国产成人综合亚洲网站| 免费在线观看精品| 一区二区三区在线观看动漫| 久久亚洲精华国产精华液| 欧美三级中文字幕在线观看| 大胆亚洲人体视频| 精品午夜久久福利影院| 午夜一区二区三区视频| 亚洲欧美激情小说另类| 中文字幕二三区不卡| 精品国产乱码久久久久久图片 | 洋洋成人永久网站入口| 国产夜色精品一区二区av| 欧美日本高清视频在线观看| 91小视频在线| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 久久人人超碰精品| 欧美一卡二卡在线| 欧美肥胖老妇做爰| 欧美色窝79yyyycom| 91麻豆123| 91热门视频在线观看| www.综合网.com| 成人av在线看| 成人app在线观看| 不卡电影免费在线播放一区| 成人综合婷婷国产精品久久免费| 国内偷窥港台综合视频在线播放| 麻豆极品一区二区三区| 美女视频黄 久久| 麻豆91精品视频| 麻豆国产91在线播放| 久久99精品国产| 精品一区二区三区久久| 青青国产91久久久久久| 免费黄网站欧美| 国产一区二三区好的| 国产精品1区2区| 国产成人精品亚洲777人妖| 成人短视频下载| 91福利精品第一导航| 欧美日韩激情一区二区三区| 欧美精品日韩精品| 日韩精品中文字幕一区二区三区| 日韩一级片网站| 久久久久久一级片| 亚洲欧洲美洲综合色网| 亚洲精品国产品国语在线app| 亚洲一区二区三区不卡国产欧美| 水野朝阳av一区二区三区| 久久国产精品一区二区| 国产精品香蕉一区二区三区| 成人av网站在线| 欧美三级视频在线观看| 日韩欧美激情四射| 亚洲欧洲日韩综合一区二区| 亚洲一区二区黄色| 精品影院一区二区久久久| 国产91在线观看丝袜| 一本大道久久精品懂色aⅴ | 蜜臀久久久99精品久久久久久| 久久99国产精品尤物| 成人免费视频国产在线观看| 欧美性色黄大片手机版| 久久久久国产精品人| 亚洲在线免费播放| 国产精品66部| 欧美在线观看视频一区二区| 精品国产污污免费网站入口 | 九色|91porny| 91久久精品网| 久久精品一区二区| 亚洲国产成人av| 成人福利在线看| 日韩欧美一级精品久久| 亚洲欧美日韩久久精品| 久久精品国产99久久6| 91免费看片在线观看| 日韩一区二区精品葵司在线| 国产精品不卡一区| 精品制服美女丁香| 色婷婷亚洲一区二区三区| 国产亚洲va综合人人澡精品 | 亚洲一二三区在线观看| 国产寡妇亲子伦一区二区| 精品视频1区2区| 亚洲视频综合在线| 国产成人aaaa| 欧美变态tickle挠乳网站| 亚洲成人福利片| 日本韩国一区二区三区| 国产色91在线| 久久91精品国产91久久小草| 欧美色网一区二区| 亚洲欧美国产高清| 91视频你懂的| 中文字幕乱码久久午夜不卡| 国模一区二区三区白浆| 日韩一区二区精品葵司在线| 五月婷婷综合在线| 欧美在线观看18| 夜夜精品浪潮av一区二区三区| 不卡视频在线看| 国产精品久久久久婷婷二区次| 国产成人在线电影| 久久久不卡网国产精品二区| 国内精品免费**视频| 日韩欧美三级在线| 美女在线视频一区| www久久精品| 国产精品123| 国产精品理论片在线观看| 成人高清免费观看| 亚洲欧美激情在线|