DevExpress.Web.ASPxGridView.Scripts.TableColumnResizing.js
Upload User: lh8511
Upload Date: 2013-01-28
Package Size: 7353k
Code Size: 6k
Development Platform:

Visual C++

  1. var __aspxTableColumnResizing=null;ASPxClientTableColumnResizing=_aspxCreateClass(null,{constructor:function(){this.mainTable=null;this.lastColGroup=null;this.column=null;this.maximumOffset=5;this.minimumWidth=5;this.cursors=new Object();this.prevX=0;this.resizedInput=null;this.resizableControl=null;this.editorsList=null;},StartResizing:function(mainTable,column,evt){this.mainTable=mainTable;this.lastColGroup=this._getLastColGroup();this.groupCols=this.lastColGroup!=null?_aspxGetElementsByTagName(this.lastColGroup,"COL"):null;this.column=column;__aspxTableColumnResizing=this;},CanStartResizing:function(column,evt){if(!_aspxIsExists(column.id)||column.id=="")return false;this.prevAbsX=_aspxGetAbsoluteX(column);this.prevX=_aspxGetEventX(evt);var right=this.prevAbsX+column.offsetWidth;return(right>this.prevX)&&(right-this.prevX<this.maximumOffset);},SetResizedInput:function(input){this.resizedInput=input;},IsResizing:function(){return __aspxTableColumnResizing==this;},GetCursor:function(element,evt){var defaultCursor=this._getDefaultCursor(element);if(this.IsResizing()||this.CanStartResizing(element,evt))return "W-resize";return defaultCursor;},SetResizableControl:function(resizableControl){this.resizableControl=resizableControl;},SetEditorsList:function(list){this.editorsList=list;},onmouseup:function(evt){this.CancelResizing(evt);this.endResizing();},onmousemove:function(evt){if(this.lastColGroup==null)return;var col=this._getColByCell(this.column);if(col==null)return;var newX=_aspxGetEventX(evt);var absX=_aspxGetAbsoluteX(this.column);var prevWidth=this.prevX-this.prevAbsX;var newWidth=newX-absX;var delta=newWidth-prevWidth;var newColWidth=this._getColGroupWidth(this.column,col,prevWidth+delta);if(newColWidth<this.minimumWidth)return;if(!this.canApplyResizableElementsWidth(-delta))return;col.width=newColWidth+"px";this.column.style.width=newColWidth+"px";this.applyResizableElementsWidth(-delta);this.prevAbsX=absX;this.prevX=newX;},CancelResizing:function(evt){__aspxTableColumnResizing=null;},canApplyResizableElementsWidth:function(delta){if(_aspxIsExists(this.resizableControl))return true;var changedColumn=this._getNextChangedColumn(this.column,delta);if(changedColumn==null)return false;var oldWidth=this.getElementStyleOrigionalWidth(changedColumn);return oldWidth+delta>=this.minimumWidth;},applyResizableElementsWidth:function(delta){if(_aspxIsExists(this.resizableControl)){this.resizableControl.style.width=(this.resizableControl.offsetWidth-delta)+"px";}else{var changedColumn=this._getNextChangedColumn(this.column,delta);if(changedColumn==null)return;var oldWidth=this.getElementStyleOrigionalWidth(changedColumn);var changedCol=this._getColByCell(changedColumn);changedCol.width=(oldWidth+delta)+"px";changedColumn.style.width=changedCol.width;}},getElementStyleOrigionalWidth:function(element){if(!__aspxIE)return element.offsetWidth;var paddings=0;if(window.getComputedStyle){paddings=parseInt('0'+window.getComputedStyle(element,null).getPropertyValue("padding-left"),10)+parseInt('0'+window.getComputedStyle(element,null).getPropertyValue("padding-right"),10)+parseInt('0'+window.getComputedStyle(element,null).getPropertyValue("border-left-width"),10)+parseInt('0'+window.getComputedStyle(element,null).getPropertyValue("border-right-width"),10);}else if(element.currentStyle){var style=element.currentStyle;if(style.width.indexOf("px")>-1)return parseInt('0'+style.width,10);paddings=parseInt('0'+style.paddingLeft,10)+parseInt('0'+style.paddingRight,10)+parseInt('0'+style.borderLeftWidth,10)+parseInt('0'+style.borderRightWidth,10);}return element.offsetWidth-paddings;},endResizing:function(){if(!_aspxIsExists(this.resizedInput)||!_aspxIsExists(this.column)||!_aspxIsExists(this.groupCols))return;var cells=this.column.parentNode.cells;var dif=this.groupCols.length-cells.length;if(dif<0)return;var res="";for(var i=dif;i<this.groupCols.length;i++){var width=this.groupCols[i].width;if(!_aspxIsExists(width)||width==""){width=this.getElementStyleOrigionalWidth(cells[i-dif]);}
  2. res+=width+"|";}
  3. this.resizedInput.value=res;this.CorrectEditorsBounds();},CorrectEditorsBounds:function(){if(this.editorsList==null)return;for(var i=0;i<this.editorsList.length;i++)this.editorsList[i].ResetInputElementWidth();for(var i=0;i<this.editorsList.length;i++)this.editorsList[i].AdjustInputElementWidth();},_getColByCell:function(column){if(this.groupCols==null)return null;var cells=column.parentNode.cells;if(this.groupCols.length<cells.length)return null;return this.groupCols[column.cellIndex+this.groupCols.length-cells.length];},_getColGroupWidth:function(column,col,width){var cells=column.parentNode.cells;if(column.index>0||this.groupCols==null||this.groupCols.length==cells.length)return width;var oldWidth=width;for(var i=0;i<this.groupCols.length-cells.length;i++){width-=this.groupCols[i].width;}return width;},_getNextChangedColumn:function(column,dWidth){if(column.cellIndex==0&&column.parentNode.cells.length==1)return null;var cellIndex=column.cellIndex+1<column.parentNode.cells.length?column.cellIndex+1:column.cellIndex-1;return column.parentNode.cells[cellIndex];},_getLastColGroup:function(){if(this.mainTable==null)return null;var res=_aspxGetElementsByTagName(this.mainTable,"COLGROUP");return res.length>0?res[res.length-1]:null;},_getDefaultCursor:function(element){if(!_aspxIsExists(this.cursors[element.id]))this.cursors[element.id]=_aspxGetCurrentStyle(element).cursor;return this.cursors[element.id];}});function TableColumnResizing_onmouseup(e){if(__aspxTableColumnResizing!=null){__aspxTableColumnResizing.onmouseup(e);return true;}}
  4. function TableColumnResizing_onmousemove(e){if(__aspxTableColumnResizing!=null){__aspxTableColumnResizing.onmousemove(e);return true;}}
  5. function TableColumnResizing_onselectstart(e){if(__aspxTableColumnResizing!=null){document.selection.empty();return false;}}
  6. _aspxAttachEventToDocument("mouseup",TableColumnResizing_onmouseup);_aspxAttachEventToDocument("mousemove",TableColumnResizing_onmousemove);_aspxAttachEventToDocument("selectstart",TableColumnResizing_onselectstart);