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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gridview.js

?? ext js demo ext學習資料
?? JS
?? 第 1 頁 / 共 4 頁
字號:
/*
 * Ext JS Library 1.1 RC 1
 * Copyright(c) 2006-2007, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://www.extjs.com/license
 */

Ext.grid.GridView = function(config){
    Ext.grid.GridView.superclass.constructor.call(this);
    this.el = null;

    Ext.apply(this, config);
};

Ext.extend(Ext.grid.GridView, Ext.grid.AbstractGridView, {

    /**
     * Override this function to apply custom css classes to rows during rendering
     * @param {Record} record The record
     * @param {Number} index
     * @method getRowClass
     */
    rowClass : "x-grid-row",

    cellClass : "x-grid-col",

    tdClass : "x-grid-td",

    hdClass : "x-grid-hd",

    splitClass : "x-grid-split",

    sortClasses : ["sort-asc", "sort-desc"],

    enableMoveAnim : false,

    hlColor: "C3DAF9",

    dh : Ext.DomHelper,

    fly : Ext.Element.fly,

    css : Ext.util.CSS,

    borderWidth: 1,

    splitOffset: 3,

    scrollIncrement : 22,

    cellRE: /(?:.*?)x-grid-(?:hd|cell|csplit)-(?:[\d]+)-([\d]+)(?:.*?)/,

    findRE: /\s?(?:x-grid-hd|x-grid-col|x-grid-csplit)\s/,

    bind : function(ds, cm){
        if(this.ds){
            this.ds.un("load", this.onLoad, this);
            this.ds.un("datachanged", this.onDataChange);
            this.ds.un("add", this.onAdd);
            this.ds.un("remove", this.onRemove);
            this.ds.un("update", this.onUpdate);
            this.ds.un("clear", this.onClear);
        }
        if(ds){
            ds.on("load", this.onLoad, this);
            ds.on("datachanged", this.onDataChange, this);
            ds.on("add", this.onAdd, this);
            ds.on("remove", this.onRemove, this);
            ds.on("update", this.onUpdate, this);
            ds.on("clear", this.onClear, this);
        }
        this.ds = ds;

        if(this.cm){
            this.cm.un("widthchange", this.onColWidthChange, this);
            this.cm.un("headerchange", this.onHeaderChange, this);
            this.cm.un("hiddenchange", this.onHiddenChange, this);
            this.cm.un("columnmoved", this.onColumnMove, this);
            this.cm.un("columnlockchange", this.onColumnLock, this);
        }
        if(cm){
            this.generateRules(cm);
            cm.on("widthchange", this.onColWidthChange, this);
            cm.on("headerchange", this.onHeaderChange, this);
            cm.on("hiddenchange", this.onHiddenChange, this);
            cm.on("columnmoved", this.onColumnMove, this);
            cm.on("columnlockchange", this.onColumnLock, this);
        }
        this.cm = cm;
    },

    init: function(grid){
		Ext.grid.GridView.superclass.init.call(this, grid);

		this.bind(grid.dataSource, grid.colModel);

	    grid.on("headerclick", this.handleHeaderClick, this);

        if(grid.trackMouseOver){
            grid.on("mouseover", this.onRowOver, this);
	        grid.on("mouseout", this.onRowOut, this);
	    }
	    grid.cancelTextSelection = function(){};
		this.gridId = grid.id;

		var tpls = this.templates || {};

		if(!tpls.master){
		    tpls.master = new Ext.Template(
		       '<div class="x-grid" hidefocus="true">',
		          '<div class="x-grid-topbar"></div>',
		          '<div class="x-grid-scroller"><div></div></div>',
		          '<div class="x-grid-locked">',
		              '<div class="x-grid-header">{lockedHeader}</div>',
		              '<div class="x-grid-body">{lockedBody}</div>',
		          "</div>",
		          '<div class="x-grid-viewport">',
		              '<div class="x-grid-header">{header}</div>',
		              '<div class="x-grid-body">{body}</div>',
		          "</div>",
		          '<div class="x-grid-bottombar"></div>',
		          '<a href="#" class="x-grid-focus" tabIndex="-1"></a>',
		          '<div class="x-grid-resize-proxy">&#160;</div>',
		       "</div>"
		    );
		    tpls.master.disableformats = true;
		}

		if(!tpls.header){
		    tpls.header = new Ext.Template(
		       '<table border="0" cellspacing="0" cellpadding="0">',
		       '<tbody><tr class="x-grid-hd-row">{cells}</tr></tbody>',
		       "</table>{splits}"
		    );
		    tpls.header.disableformats = true;
		}
		tpls.header.compile();

		if(!tpls.hcell){
		    tpls.hcell = new Ext.Template(
		        '<td class="x-grid-hd x-grid-td-{id} {cellId}"><div title="{title}" class="x-grid-hd-inner x-grid-hd-{id}">',
		        '<div class="x-grid-hd-text" unselectable="on">{value}<img class="x-grid-sort-icon" src="', Ext.BLANK_IMAGE_URL, '" /></div>',
		        "</div></td>"
		     );
		     tpls.hcell.disableFormats = true;
		}
		tpls.hcell.compile();

		if(!tpls.hsplit){
		    tpls.hsplit = new Ext.Template('<div class="x-grid-split {splitId} x-grid-split-{id}" style="{style}" unselectable="on">&#160;</div>');
		    tpls.hsplit.disableFormats = true;
		}
		tpls.hsplit.compile();

		if(!tpls.body){
		    tpls.body = new Ext.Template(
		       '<table border="0" cellspacing="0" cellpadding="0">',
		       "<tbody>{rows}</tbody>",
		       "</table>"
		    );
		    tpls.body.disableFormats = true;
		}
		tpls.body.compile();

		if(!tpls.row){
		    tpls.row = new Ext.Template('<tr class="x-grid-row {alt}">{cells}</tr>');
		    tpls.row.disableFormats = true;
		}
		tpls.row.compile();

		if(!tpls.cell){
		    tpls.cell = new Ext.Template(
		        '<td class="x-grid-col x-grid-td-{id} {cellId} {css}" tabIndex="0">',
		        '<div class="x-grid-col-{id} x-grid-cell-inner"><div class="x-grid-cell-text" unselectable="on" {attr}>{value}</div></div>',
		        "</td>"
		    );
            tpls.cell.disableFormats = true;
        }
		tpls.cell.compile();

		this.templates = tpls;
	},

	// remap these for backwards compat
    onColWidthChange : function(){
        this.updateColumns.apply(this, arguments);
    },
    onHeaderChange : function(){
        this.updateHeaders.apply(this, arguments);
    }, 
    onHiddenChange : function(){
        this.handleHiddenChange.apply(this, arguments);
    },
    onColumnMove : function(){
        this.handleColumnMove.apply(this, arguments);
    },
    onColumnLock : function(){
        this.handleLockChange.apply(this, arguments);
    },

    onDataChange : function(){
        this.refresh();
        this.updateHeaderSortState();
    },

	onClear : function(){
        this.refresh();
    },

	onUpdate : function(ds, record){
        this.refreshRow(record);
    },

    refreshRow : function(record){
        var ds = this.ds, index;
        if(typeof record == 'number'){
            index = record;
            record = ds.getAt(index);
        }else{
            index = ds.indexOf(record);
        }
        this.insertRows(ds, index, index, true);
        this.onRemove(ds, record, index+1, true);
        this.syncRowHeights(index, index);
        this.layout();
        this.fireEvent("rowupdated", this, index, record);
    },

    onAdd : function(ds, records, index){
        this.insertRows(ds, index, index + (records.length-1));
    },

    onRemove : function(ds, record, index, isUpdate){
        if(isUpdate !== true){
            this.fireEvent("beforerowremoved", this, index, record);
        }
        var bt = this.getBodyTable(), lt = this.getLockedTable();
        if(bt.rows[index]){
            bt.firstChild.removeChild(bt.rows[index]);
        }
        if(lt.rows[index]){
            lt.firstChild.removeChild(lt.rows[index]);
        }
        if(isUpdate !== true){
            this.stripeRows(index);
            this.syncRowHeights(index, index);
            this.layout();
            this.fireEvent("rowremoved", this, index, record);
        }
    },

    onLoad : function(){
        this.scrollToTop();
    },

    /**
     * Scrolls the grid to the top
     */
    scrollToTop : function(){
        if(this.scroller){
            this.scroller.dom.scrollTop = 0;
            this.syncScroll();
        }
    },

    /**
     * Gets a panel in the header of the grid that can be used for toolbars etc.
     * After modifying the contents of this panel a call to grid.autoSize() may be
     * required to register any changes in size.
     * @param {Boolean} doShow By default the header is hidden. Pass true to show the panel
     * @return Ext.Element
     */
    getHeaderPanel : function(doShow){
        if(doShow){
            this.headerPanel.show();
        }
        return this.headerPanel;
	},

	/**
     * Gets a panel in the footer of the grid that can be used for toolbars etc.
     * After modifying the contents of this panel a call to grid.autoSize() may be
     * required to register any changes in size.
     * @param {Boolean} doShow By default the footer is hidden. Pass true to show the panel
     * @return Ext.Element
     */
    getFooterPanel : function(doShow){
        if(doShow){
            this.footerPanel.show();
        }
        return this.footerPanel;
	},

	initElements : function(){
	    var E = Ext.Element;
	    var el = this.grid.getGridEl().dom.firstChild;
	    var cs = el.childNodes;

	    this.el = new E(el);
	    this.headerPanel = new E(el.firstChild);
	    this.headerPanel.enableDisplayMode("block");

        this.scroller = new E(cs[1]);
	    this.scrollSizer = new E(this.scroller.dom.firstChild);

	    this.lockedWrap = new E(cs[2]);
	    this.lockedHd = new E(this.lockedWrap.dom.firstChild);
	    this.lockedBody = new E(this.lockedWrap.dom.childNodes[1]);

	    this.mainWrap = new E(cs[3]);
	    this.mainHd = new E(this.mainWrap.dom.firstChild);
	    this.mainBody = new E(this.mainWrap.dom.childNodes[1]);

	    this.footerPanel = new E(cs[4]);
	    this.footerPanel.enableDisplayMode("block");

        this.focusEl = new E(cs[5]);
        this.focusEl.swallowEvent("click", true);
        this.resizeProxy = new E(cs[6]);

	    this.headerSelector = String.format(
	       '#{0} td.x-grid-hd, #{1} td.x-grid-hd',
	       this.lockedHd.id, this.mainHd.id
	    );

	    this.splitterSelector = String.format(
	       '#{0} div.x-grid-split, #{1} div.x-grid-split',
	       this.lockedHd.id, this.mainHd.id
	    );
    },

	getHeaderCell : function(index){
	    return Ext.DomQuery.select(this.headerSelector)[index];
	},

	getHeaderCellMeasure : function(index){
	    return this.getHeaderCell(index).firstChild;
	},

	getHeaderCellText : function(index){
	    return this.getHeaderCell(index).firstChild.firstChild;
	},

	getLockedTable : function(){
	    return this.lockedBody.dom.firstChild;
	},

	getBodyTable : function(){
	    return this.mainBody.dom.firstChild;
	},

	getLockedRow : function(index){
	    return this.getLockedTable().rows[index];
	},

	getRow : function(index){
	    return this.getBodyTable().rows[index];
	},

	getRowComposite : function(index){
	    if(!this.rowEl){
	        this.rowEl = new Ext.CompositeElementLite();
	    }
        var els = [], lrow, mrow;
        if(lrow = this.getLockedRow(index)){
            els.push(lrow);
        }
        if(mrow = this.getRow(index)){
            els.push(mrow);
        }
        this.rowEl.elements = els;
	    return this.rowEl;
	},

	getCell : function(rowIndex, colIndex){
	    var locked = this.cm.getLockedCount();
	    var source;
	    if(colIndex < locked){
	        source = this.lockedBody.dom.firstChild;
	    }else{
	        source = this.mainBody.dom.firstChild;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区三区在线不卡| 国产欧美一区二区精品秋霞影院 | 爽爽淫人综合网网站| 麻豆成人久久精品二区三区红| 国产高清视频一区| 欧美日本一区二区三区| 国产日本一区二区| 日本不卡视频在线| 在线视频中文字幕一区二区| 久久久久久麻豆| 免费在线观看精品| 欧美日韩专区在线| 亚洲日本青草视频在线怡红院| 美女一区二区视频| 欧美三级在线视频| 中文字幕亚洲不卡| 国产一区二区美女诱惑| 欧美一级精品在线| 日韩高清在线一区| 欧美三级韩国三级日本一级| 国产在线精品不卡| 国产精品你懂的| 综合久久国产九一剧情麻豆| 国产综合色视频| 日韩欧美一区在线| 欧美变态tickle挠乳网站| 成人综合婷婷国产精品久久 | 亚洲靠逼com| 国产成人免费视频精品含羞草妖精| 欧美疯狂性受xxxxx喷水图片| 一区二区三区在线看| 91热门视频在线观看| 综合激情成人伊人| 色综合久久久网| 亚洲欧洲中文日韩久久av乱码| 成人激情图片网| 国产精品久久久一区麻豆最新章节| 国产尤物一区二区在线| 一区二区三区在线免费视频| 欧美中文字幕久久| 亚洲一二三区在线观看| 欧美日本乱大交xxxxx| 奇米色777欧美一区二区| 日韩视频国产视频| 国产真实乱偷精品视频免| 久久午夜免费电影| 丁香天五香天堂综合| 亚洲天堂网中文字| 欧美日韩国产天堂| 久久99深爱久久99精品| 久久精品人人做| 波多野洁衣一区| 亚洲永久精品国产| 555www色欧美视频| 国产精品1024| 一区二区三区蜜桃| 欧美不卡一区二区| 波多野结衣视频一区| 岛国精品在线观看| 亚洲国产你懂的| 精品欧美乱码久久久久久1区2区 | 91极品视觉盛宴| 麻豆精品视频在线| 国产欧美日韩综合精品一区二区| 91在线视频在线| 蜜乳av一区二区三区| 国产网红主播福利一区二区| 色综合久久中文综合久久牛| 日日欢夜夜爽一区| 国产精品免费久久久久| 欧美精品三级在线观看| 国产成人午夜精品5599| 一个色妞综合视频在线观看| 亚洲精品一区二区三区福利| 一本在线高清不卡dvd| 毛片一区二区三区| 亚洲精品成a人| 国产蜜臀av在线一区二区三区| 欧美午夜精品一区二区三区| 国产夫妻精品视频| 美女脱光内衣内裤视频久久网站| 国产精品狼人久久影院观看方式| 欧美一区二区黄| 色婷婷亚洲一区二区三区| 国产一区二区在线观看免费| 五月天婷婷综合| 亚洲视频在线观看三级| 精品国产乱码久久久久久1区2区| 色综合视频在线观看| 国产一区二区三区电影在线观看| 亚洲动漫第一页| 亚洲欧美日韩在线| 国产欧美一区二区在线| 久久亚洲捆绑美女| 欧美成人福利视频| 欧美日产在线观看| 欧美色精品在线视频| 色吧成人激情小说| 99精品欧美一区| 国产传媒日韩欧美成人| 国产制服丝袜一区| 久久精品国产精品亚洲综合| 婷婷成人激情在线网| 亚洲久草在线视频| 亚洲摸摸操操av| 1000精品久久久久久久久| 国产精品网站在线观看| 国产日韩精品一区| 亚洲va韩国va欧美va| 国产精品成人一区二区三区夜夜夜| 久久在线观看免费| 精品国产乱码久久| 久久天天做天天爱综合色| 精品国产成人系列| www日韩大片| 国产日韩欧美a| 日本一区二区三区国色天香 | 777久久久精品| 欧美久久一区二区| 欧美日韩不卡一区| 日韩欧美一级精品久久| 日韩欧美综合一区| 久久久久久一二三区| 久久久久国产精品人| 久久久久久久av麻豆果冻| 久久综合色鬼综合色| 国产欧美一区二区精品仙草咪| 中文字幕国产一区二区| 亚洲品质自拍视频| 午夜一区二区三区视频| 蜜桃一区二区三区在线观看| 极品尤物av久久免费看| 丰满放荡岳乱妇91ww| 色悠悠亚洲一区二区| 欧美色图在线观看| 日韩一区二区免费在线电影| 久久尤物电影视频在线观看| 一区在线观看视频| 五月天久久比比资源色| 国产一区二区三区香蕉| www.成人在线| 91麻豆精品国产91久久久使用方法| 日韩精品一区二区三区老鸭窝| 国产欧美一区二区在线| 亚洲午夜久久久久久久久电影网| 奇米在线7777在线精品| 国产一区二区三区电影在线观看| 91小视频免费观看| 欧美一区二区网站| 国产精品久99| 日韩国产一二三区| 丁香一区二区三区| 91精品国产91久久综合桃花| 精品久久人人做人人爽| 中文字幕一区二区三区四区不卡| 水野朝阳av一区二区三区| 成人美女在线视频| 91精品国产色综合久久ai换脸 | 精品99久久久久久| 亚洲色图一区二区| 精品一区二区三区免费视频| eeuss影院一区二区三区| 欧美精品久久久久久久多人混战 | www.av亚洲| 欧美一区二区视频免费观看| 国产精品黄色在线观看| 九九在线精品视频| 欧美性猛交xxxxxx富婆| 国产精品天干天干在观线| 日日噜噜夜夜狠狠视频欧美人 | 亚洲综合在线电影| 精品一二线国产| 欧美三级日韩在线| 国产精品毛片高清在线完整版| 青草av.久久免费一区| 欧美亚洲综合一区| 综合婷婷亚洲小说| 国产高清不卡二三区| 日韩欧美国产一区在线观看| 亚洲一卡二卡三卡四卡无卡久久| 国产suv一区二区三区88区| 日韩欧美在线1卡| 日韩高清中文字幕一区| 欧美精品在欧美一区二区少妇| 综合欧美一区二区三区| 成人免费视频免费观看| 久久一二三国产| 久久精品国产亚洲aⅴ| 欧美一区二区私人影院日本| 亚洲丰满少妇videoshd| 欧美日韩亚洲另类| 亚洲一区二区三区在线看 | 国产福利不卡视频| xfplay精品久久| 国产一区二区在线视频| 337p粉嫩大胆噜噜噜噜噜91av| 久久成人综合网| 久久综合狠狠综合久久激情 | 色又黄又爽网站www久久| 亚洲三级在线免费观看|