⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gridview.js

📁 Ext JS是一个创建丰富互联网应用程序的跨浏览器的JavaScrip库。它包含:高效率
💻 JS
📖 第 1 页 / 共 4 页
字号:
 * @param {Number} row The row index in which to find the cell. * @param {Number} col The column index of the cell. * @return {HtmlElement} The &lt;TD> at the specified coordinates. */    getCell : function(row, col){        return this.getRow(row).getElementsByTagName('td')[col];    },/** * Return the &lt;TD> HtmlElement which represents the Grid's header cell for the specified column index. * @param {Number} index The column index * @return {HtmlElement} The &lt;TD> element. */    getHeaderCell : function(index){      return this.mainHd.dom.getElementsByTagName('td')[index];    },    // manipulating elements    // private - use getRowClass to apply custom row classes    addRowClass : function(row, cls){        var r = this.getRow(row);        if(r){            this.fly(r).addClass(cls);        }    },    // private    removeRowClass : function(row, cls){        var r = this.getRow(row);        if(r){            this.fly(r).removeClass(cls);        }    },    // private    removeRow : function(row){        Ext.removeNode(this.getRow(row));        this.syncFocusEl(row);    },        // private    removeRows : function(firstRow, lastRow){        var bd = this.mainBody.dom;        for(var rowIndex = firstRow; rowIndex <= lastRow; rowIndex++){            Ext.removeNode(bd.childNodes[firstRow]);        }        this.syncFocusEl(firstRow);    },    // scrolling stuff    // private    getScrollState : function(){        var sb = this.scroller.dom;        return {left: sb.scrollLeft, top: sb.scrollTop};    },    // private    restoreScroll : function(state){        var sb = this.scroller.dom;        sb.scrollLeft = state.left;        sb.scrollTop = state.top;    },    /**     * Scrolls the grid to the top     */    scrollToTop : function(){        this.scroller.dom.scrollTop = 0;        this.scroller.dom.scrollLeft = 0;    },    // private    syncScroll : function(){      this.syncHeaderScroll();      var mb = this.scroller.dom;        this.grid.fireEvent("bodyscroll", mb.scrollLeft, mb.scrollTop);    },    // private    syncHeaderScroll : function(){        var mb = this.scroller.dom;        this.innerHd.scrollLeft = mb.scrollLeft;        this.innerHd.scrollLeft = mb.scrollLeft; // second time for IE (1/2 time first fails, other browsers ignore)    },    // private    updateSortIcon : function(col, dir){        var sc = this.sortClasses;        var hds = this.mainHd.select('td').removeClass(sc);        hds.item(col).addClass(sc[dir == "DESC" ? 1 : 0]);    },    // private    updateAllColumnWidths : function(){        var tw = this.getTotalWidth();        var clen = this.cm.getColumnCount();        var ws = [];        for(var i = 0; i < clen; i++){            ws[i] = this.getColumnWidth(i);        }        this.innerHd.firstChild.style.width = this.getOffsetWidth();        this.innerHd.firstChild.firstChild.style.width = tw;        this.mainBody.dom.style.width = tw;        for(var i = 0; i < clen; i++){            var hd = this.getHeaderCell(i);            hd.style.width = ws[i];        }        var ns = this.getRows(), row, trow;        for(var i = 0, len = ns.length; i < len; i++){            row = ns[i];            row.style.width = tw;            if(row.firstChild){                row.firstChild.style.width = tw;                trow = row.firstChild.rows[0];                for (var j = 0; j < clen; j++) {                   trow.childNodes[j].style.width = ws[j];                }            }        }        this.onAllColumnWidthsUpdated(ws, tw);    },    // private    updateColumnWidth : function(col, width){        var w = this.getColumnWidth(col);        var tw = this.getTotalWidth();        this.innerHd.firstChild.style.width = this.getOffsetWidth();        this.innerHd.firstChild.firstChild.style.width = tw;        this.mainBody.dom.style.width = tw;        var hd = this.getHeaderCell(col);        hd.style.width = w;        var ns = this.getRows(), row;        for(var i = 0, len = ns.length; i < len; i++){            row = ns[i];            row.style.width = tw;            if(row.firstChild){                row.firstChild.style.width = tw;                row.firstChild.rows[0].childNodes[col].style.width = w;            }        }        this.onColumnWidthUpdated(col, w, tw);    },    // private    updateColumnHidden : function(col, hidden){        var tw = this.getTotalWidth();        this.innerHd.firstChild.style.width = this.getOffsetWidth();        this.innerHd.firstChild.firstChild.style.width = tw;        this.mainBody.dom.style.width = tw;        var display = hidden ? 'none' : '';        var hd = this.getHeaderCell(col);        hd.style.display = display;        var ns = this.getRows(), row;        for(var i = 0, len = ns.length; i < len; i++){            row = ns[i];            row.style.width = tw;            if(row.firstChild){                row.firstChild.style.width = tw;                row.firstChild.rows[0].childNodes[col].style.display = display;            }        }        this.onColumnHiddenUpdated(col, hidden, tw);        delete this.lastViewWidth; // force recalc        this.layout();    },    // private    doRender : function(cs, rs, ds, startRow, colCount, stripe){        var ts = this.templates, ct = ts.cell, rt = ts.row, last = colCount-1;        var tstyle = 'width:'+this.getTotalWidth()+';';        // buffers        var buf = [], cb, c, p = {}, rp = {tstyle: tstyle}, r;        for(var j = 0, len = rs.length; j < len; j++){            r = rs[j]; cb = [];            var rowIndex = (j+startRow);            for(var i = 0; i < colCount; i++){                c = cs[i];                p.id = c.id;                p.css = i == 0 ? 'x-grid3-cell-first ' : (i == last ? 'x-grid3-cell-last ' : '');                p.attr = p.cellAttr = "";                p.value = c.renderer(r.data[c.name], p, r, rowIndex, i, ds);                p.style = c.style;                if(p.value == undefined || p.value === "") p.value = "&#160;";                if(this.markDirty && r.dirty && typeof r.modified[c.name] !== 'undefined'){                    p.css += ' x-grid3-dirty-cell';                }                cb[cb.length] = ct.apply(p);            }            var alt = [];            if(stripe && ((rowIndex+1) % 2 == 0)){                alt[0] = "x-grid3-row-alt";            }            if(r.dirty){                alt[1] = " x-grid3-dirty-row";            }            rp.cols = colCount;            if(this.getRowClass){                alt[2] = this.getRowClass(r, rowIndex, rp, ds);            }            rp.alt = alt.join(" ");            rp.cells = cb.join("");            buf[buf.length] =  rt.apply(rp);        }        return buf.join("");    },    // private    processRows : function(startRow, skipStripe){        if(!this.ds || this.ds.getCount() < 1){            return;        }        skipStripe = skipStripe || !this.grid.stripeRows;        startRow = startRow || 0;        var rows = this.getRows();        var cls = ' x-grid3-row-alt ';        rows[0].className += ' x-grid3-row-first';        rows[rows.length - 1].className += ' x-grid3-row-last';        for(var i = startRow, len = rows.length; i < len; i++){            var row = rows[i];            row.rowIndex = i;            if(!skipStripe){                var isAlt = ((i+1) % 2 == 0);                var hasAlt = (' '+row.className + ' ').indexOf(cls) != -1;                if(isAlt == hasAlt){                    continue;                }                if(isAlt){                    row.className += " x-grid3-row-alt";                }else{                    row.className = row.className.replace("x-grid3-row-alt", "");                }            }        }    },    afterRender : function(){        if(!this.ds || !this.cm){            return;        }        this.mainBody.dom.innerHTML = this.renderRows() || '&nbsp;';        this.processRows(0, true);        if(this.deferEmptyText !== true){            this.applyEmptyText();        }    },    // private    renderUI : function(){        var header = this.renderHeaders();        var body = this.templates.body.apply({rows:'&nbsp;'});        var html = this.templates.master.apply({            body: body,            header: header,            ostyle: 'width:'+this.getOffsetWidth()+';',            bstyle: 'width:'+this.getTotalWidth()+';'        });        var g = this.grid;        g.getGridEl().dom.innerHTML = html;        this.initElements();        // get mousedowns early        Ext.fly(this.innerHd).on("click", this.handleHdDown, this);        this.mainHd.on("mouseover", this.handleHdOver, this);        this.mainHd.on("mouseout", this.handleHdOut, this);        this.mainHd.on("mousemove", this.handleHdMove, this);        this.scroller.on('scroll', this.syncScroll,  this);        if(g.enableColumnResize !== false){            this.splitZone = new Ext.grid.GridView.SplitDragZone(g, this.mainHd.dom);        }        if(g.enableColumnMove){            this.columnDrag = new Ext.grid.GridView.ColumnDragZone(g, this.innerHd);            this.columnDrop = new Ext.grid.HeaderDropZone(g, this.mainHd.dom);        }        if(g.enableHdMenu !== false){            this.hmenu = new Ext.menu.Menu({id: g.id + "-hctx"});            this.hmenu.add(                {itemId:"asc", text: this.sortAscText, cls: "xg-hmenu-sort-asc"},                {itemId:"desc", text: this.sortDescText, cls: "xg-hmenu-sort-desc"}            );            if(g.enableColumnHide !== false){                this.colMenu = new Ext.menu.Menu({id:g.id + "-hcols-menu"});                this.colMenu.on("beforeshow", this.beforeColMenuShow, this);                this.colMenu.on("itemclick", this.handleHdMenuClick, this);                this.hmenu.add('-', {                    itemId:"columns",                    hideOnClick: false,                    text: this.columnsText,                    menu: this.colMenu,                    iconCls: 'x-cols-icon'                });            }            this.hmenu.on("itemclick", this.handleHdMenuClick, this);        }        if(g.trackMouseOver){             this.mainBody.on("mouseover", this.onRowOver, this);             this.mainBody.on("mouseout", this.onRowOut, this);        }        if(g.enableDragDrop || g.enableDrag){            this.dragZone = new Ext.grid.GridDragZone(g, {                ddGroup : g.ddGroup || 'GridDD'            });        }        this.updateHeaderSortState();    },    // private    layout : function(){        if(!this.mainBody){            return; // not rendered        }        var g = this.grid;        var c = g.getGridEl();        var csize = c.getSize(true);        var vw = csize.width;        if(vw < 20 || csize.height < 20){ // display: none?            return;        }                if(g.autoHeight){            this.scroller.dom.style.overflow = 'visible';            if(Ext.isWebKit){                this.scroller.dom.style.position = 'static';            }        }else{            this.el.setSize(csize.width, csize.height);            var hdHeight = this.mainHd.getHeight();            var vh = csize.height - (hdHeight);            this.scroller.setSize(vw, vh);            if(this.innerHd){                this.innerHd.style.width = (vw)+'px';            }        }        if(this.forceFit){            if(this.lastViewWidth != vw){                this.fitColumns(false, false);                this.lastViewWidth = vw;            }        }else {            this.autoExpand();            this.syncHeaderScroll();        }        this.onLayout(vw, vh);    },    // template functions for subclasses and plugins    // these functions include precalculated values    onLayout : function(vw, vh){        // do nothing    },    onColumnWidthUpdated : function(col, w, tw){        //template method    },    onAllColumnWidthsUpdated : function(ws, tw){        //template method    },    onColumnHiddenUpdated : function(col, hidden, tw){        // template method    },    updateColumnText : function(col, text){        // template method    },    afterMove : function(colIndex){        // template method    },    /* ----------------------------------- Core Specific -------------------------------------------*/    // private    init : function(grid){        this.grid = grid;        this.initTemplates();        this.initData(grid.store, grid.colModel);        this.initUI(grid);    },    // private    getColumnId : function(index){      return this.cm.getColumnId(index);    },        // private     getOffsetWidth : function() {        return (this.cm.getTotalWidth() + this.scrollOffset) + 'px';    },    // private    renderHeaders : function(){        var cm = this.cm, ts = this.templates;        var ct = ts.hcell;        var cb = [], p = {};        var len = cm.getColumnCount();        var last = len - 1;        for(var i = 0; i < len; i++){            p.id = cm.getColumnId(i);            p.value = cm.getColumnHeader(i) || "";            p.style = this.getColumnStyle(i, true);            p.tooltip = this.getColumnTooltip(i);            p.css = i == 0 ? 'x-grid3-cell-first ' : (i == last ? 'x-grid3-cell-last ' : '');            if(cm.config[i].align == 'right'){                p.istyle = 'padding-right:16px';            } else {                delete p.istyle;            }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -