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

📄 dhtmlxgrid.js

📁 dhtmlxGrid 是跨浏览器的 JavaScript 表格控制组件(Grid Control)
💻 JS
📖 第 1 页 / 共 5 页
字号:
 
 this.cells3 = function(row,col){
 var cell=(row._childIndexes?row.childNodes[row._childIndexes[col]]:row.childNodes[col]);
 return this.cells4(cell);
}
 
 this.cells4 = function(cell){
 if(!cell._cellType)
 return eval("new eXcell_"+this.cellType[cell._cellIndex]+"(cell)");
 else
 return eval("new eXcell_"+cell._cellType+"(cell)");
}
 
 this.getCombo = function(col_ind){
 if(this.cellType[col_ind].indexOf('co')==0){
 if(!this.combos[col_ind]){
 this.combos[col_ind] = new dhtmlXGridComboObject();
}
 return this.combos[col_ind];
}else{

 return null;
}
}
 
 this.setUserData = function(row_id,name,value){
 try{
 if(row_id=="")
 row_id = "gridglobaluserdata";
 if(!this.UserData[row_id])
 this.UserData[row_id] = new Hashtable()
 this.UserData[row_id].put(name,value)
}catch(er){
 alert("UserData Error:"+er.description)
}
}
 
 this.getUserData = function(row_id,name){
 if(row_id=="")
 row_id = "gridglobaluserdata";
 var z=this.UserData[row_id];
 return(z?z.get(name):"");
}

 
 this.setEditable = function(fl){
 if(fl!='true' && fl!=1 && fl!=true)
 ifl = true;
 else
 ifl = false;
 for(var j=0;j<this.cellType.length;j++){
 if(this.cellType[j].indexOf('ra')==0 || this.cellType[j]=='ch'){
 for(var i=0;i<this.rowsCol.length;i++){
 var z=this.rowsCol[i].cells[j];
 if((z.childNodes.length>0)&&(z.firstChild.nodeType==1)){
 this.rowsCol[i].cells[j].firstChild.disabled = ifl;
}
}
}
}
 this.isEditable = !ifl;
}
 
 this.setSelectedRow = function(row_id,multiFL,show,call){
 if(!call)
 call = false;
 this.selectCell(this.getRowById(row_id),0,call,multiFL); if(arguments.length>2 && show==true){
 this.moveToVisible(this.getRowById(row_id).cells[0],true)
}
}
 
 this.clearSelection = function(){
 this.editStop()
 for(var i=0;i<this.selectedRows.length;i++){
 this.selectedRows[i].className=this.selectedRows[i].className.replace(/rowselected/g,"");
}

  this.selectedRows = new dhtmlxArray(0)
 this.row = null;
 if(this.cell!=null){
 this.cell.className = this.cell.className.replace(/cellselected/g,"");
 this.cell = null;
}
}
 
 this.copyRowContent = function(from_row_id,to_row_id){
 var frRow = this.getRowById(from_row_id)

 if(!this.isTreeGrid())
 for(i=0;i<frRow.cells.length;i++){
 this.cells(to_row_id,i).setValue(this.cells(from_row_id,i).getValue())
}
 else
 this._copyTreeGridRowContent(frRow,from_row_id,to_row_id);

  if(!isIE())
 this.getRowById(from_row_id).cells[0].height = frRow.cells[0].offsetHeight
}




 
 this.setHeaderCol = function(col,label){
 var z=this.hdr.rows[1];
 var col=(z._childIndexes?z._childIndexes[col]:col);
 if(!this.useImagesInHeader){
 var hdrHTML = "<div class='hdrcell'>"
 if(label.indexOf('img:[')!=-1){
 var imUrl = label.replace(/.*\[([^>]+)\].*/,"$1");
 label = label.substr(label.indexOf("]")+1,label.length)
 hdrHTML+="<img width='18px' height='18px' align='absmiddle' src='"+imUrl+"' hspace='2'>"
}
 hdrHTML+=label;
 hdrHTML+="</div>";
 z.cells[col].innerHTML = hdrHTML;

}else{ z.cells[col].style.textAlign = "left";
 z.cells[col].innerHTML = "<img src='"+this.imgURL+""+label+"' onerror='this.src = \""+this.imgURL+"imageloaderror.gif\"'>";
  var a = new Image();
 a.src = this.imgURL+""+label.replace(/(\.[a-z]+)/,".desc$1");
 this.preloadImagesAr[this.preloadImagesAr.length] = a;
 var b = new Image();
 b.src = this.imgURL+""+label.replace(/(\.[a-z]+)/,".asc$1");
 this.preloadImagesAr[this.preloadImagesAr.length] = b;
}
}
 
 this.clearAll = function(header){
 this.limit=this._limitC=0;
 this.editStop();

 if(this._dload){
 this.objBox.scrollTop=0;
 this.limit=this._limitC||0;
 this._initDrF=true;
}

 var len = this.rowsCol.length;
  if(this.loadedKidsHash!=null){
 this.loadedKidsHash.clear();
 this.loadedKidsHash.put("hashOfParents",new Hashtable());
}
  len = this.obj._rowslength();

 for(var i=len-1;i>=0;i--){
 var t_r=this.obj._rows(i);
 t_r.parentNode.removeChild(t_r);
}
 if(header){
 this.obj.rows[0].parentNode.removeChild(this.obj.rows[0]);
 for(var i=this.hdr.rows.length-1;i>=0;i--){
 var t_r=this.hdr.rows[i];
 t_r.parentNode.removeChild(t_r);
}
}

  this.row = null;
 this.cell = null;
 this._hrrar=null;

 this.rowsCol = new dhtmlxArray(0)
 this.rowsAr = new Array(0); this.rowsBuffer = new Array(new dhtmlxArray(0),new dhtmlxArray(0)); this.UserData = new Array(0)

 if(this.pagingOn){
 this.changePage(1);
 }

 if((this._hideShowColumn)&&(this.hdr.rows[0]))
 for(var i=0;i<this.hdr.rows[0].length;i++)
 this._hideShowColumn(i,"");
 this._hrrar=new Array();

 if(this._sst)
 this.enableStableSorting(true);

 this.setSizes();
 }


 
 this.sortField = function(ind,repeatFl){
 if(this.getRowsNum()==0)
 return false;
 var el = this.hdr.rows[0].cells[ind];
 if(!el)return; if(el.tagName == "TH" &&(this.fldSort.length-1)>=el._cellIndex && this.fldSort[el._cellIndex]!='na'){ if((((this.sortImg.src.indexOf("_desc.gif")==-1)&&(!repeatFl))||((this.sortImg.style.filter!="")&&(repeatFl)))&&(this.fldSorted==el)){ var sortType = "desc";
 this.sortImg.src = this.imgURL+"sort_desc.gif";
}else{ var sortType = "asc";
 this.sortImg.src = this.imgURL+"sort_asc.gif";
}
 if((this.onCLMS)&&(!this.onCLMS(ind,this,sortType)))return;

  if(this.useImagesInHeader){
 var cel=this.hdr.rows[1].cells[el._cellIndex].firstChild;
 if(this.fldSorted!=null){
 var celT=this.hdr.rows[1].cells[this.fldSorted._cellIndex].firstChild;
 celT.src = celT.src.replace(/\.[ascde]+\./,".");
}
 cel.src = cel.src.replace(/(\.[a-z]+)/,"."+sortType+"$1")
}
  this.sortRows(el._cellIndex,this.fldSort[el._cellIndex],sortType)
 this.fldSorted = el;
 var c=this.hdr.rows[1];
 var real_el=c._childIndexes?c._childIndexes[el._cellIndex]:el._cellIndex;
 this.setSortImgPos(this.hdr.rows[1].childNodes[real_el]._cellIndex);
}
}



 
 this.enableHeaderImages = function(fl){
 this.useImagesInHeader = fl;
}

 
 this.setHeader = function(hdrStr,splitSign){
 var arLab = hdrStr.split(this.delim);
 var arWdth = new Array(0);
 var arTyp = new dhtmlxArray(0);
 var arAlg = new Array(0);
 var arVAlg = new Array(0);
 var arSrt = new Array(0);
 for(var i=0;i<arLab.length;i++){
 arWdth[arWdth.length] = Math.round(100/arLab.length);
 arTyp[arTyp.length] = "ed";
 arAlg[arAlg.length] = "left";
 arVAlg[arVAlg.length] = ""; arSrt[arSrt.length] = "na";
}
 
 this.splitSign = splitSign||"#cspan";
 this.hdrLabels = arLab;
 this.cellWidth = arWdth;
 this.cellType = arTyp;
 this.cellAlign = arAlg;
 this.cellVAlign = arVAlg;
 this.fldSort = arSrt;
}


 
 this.getColType = function(cell_index){
 return this.cellType[cell_index];
}

 
 this.getColTypeById = function(col_id){
 return this.cellType[this.getColIndexById(col_id)];
}

 
 this.setColTypes = function(typeStr){
 this.cellType = dhtmlxArray(typeStr.split(this.delim));
 this._strangeParams=new Array();
 for(var i=0;i<this.cellType.length;i++)
 if((this.cellType[i].indexOf("[")!=-1))
{
 var z=this.cellType[i].split(/[\[\]]+/g);
 this.cellType[i]=z[0];
 this.defVal[i]=z[1];
 if(z[1].indexOf("=")==0){
 this.cellType[i]="math";
 this._strangeParams[i]=z[0];
}
}
}
 
 this.setColSorting = function(sortStr){
 this.fldSort = sortStr.split(this.delim)

}
 
 this.setColAlign = function(alStr){
 this.cellAlign = alStr.split(this.delim)
}
 
 this.setColVAlign = function(alStr){
 this.cellVAlign = alStr.split(this.delim)
}

 
 this.setMultiLine = function(fl){
 if(fl==true)
 this.multiLine = -1;
}
 
 this.setNoHeader = function(fl){
 if(fl==true)
 this.noHeader = true;
}
 
 this.showRow = function(rowID){
 this.moveToVisible(this.getRowById(rowID).cells[0],true)
}

 
 this.setStyle = function(ss_header,ss_grid,ss_selCell,ss_selRow){
 this.ssModifier = [ss_header,ss_grid,ss_selCell,ss_selCell,ss_selRow];
 var prefs=["#"+this.entBox.id+" table.hdr td","#"+this.entBox.id+" table.obj td","#"+this.entBox.id+" table.obj tr.rowselected td.cellselected","#"+this.entBox.id+" table.obj td.cellselected","#"+this.entBox.id+" table.obj tr.rowselected td"];

 for(var i=0;i<prefs.length;i++)
 if(_isIE)
 this.styleSheet[0].addRule(prefs[i],this.ssModifier[i]);
 else
 this.styleSheet[0].insertRule(prefs[i]+"{"+this.ssModifier[i]+"}",0);
}
 
 this.setColumnColor = function(clr){
 this.columnColor = clr.split(this.delim)
}

 
 this.enableAlterCss = function(cssE,cssU){
 if(cssE||cssU)
 this.setOnGridReconstructedHandler(function(){
 this._fixAlterCss();
});


 this._cssEven = cssE;
 this._cssUnEven = cssU;
}

 
 this._fixAlterCss = function(ind){
 ind=ind||0;
 var j=ind;
 for(var i=ind;i<this.rowsCol.length;i++){
 if(!this.rowsCol[i])continue;
 if(this.rowsCol[i].style.display!="none"){
 if(this.rowsCol[i].className.indexOf("rowselected")!=-1){
 if(j%2==1)
 this.rowsCol[i].className=this._cssUnEven+" rowselected";
 else
 this.rowsCol[i].className=this._cssEven+" rowselected";
}
 else{
 if(j%2==1)
 this.rowsCol[i].className=this._cssUnEven;
 else
 this.rowsCol[i].className=this._cssEven;
}
 j++;
}
}
}


 
 this.doDynScroll = function(fl){
 if(!this.dynScroll || this.dynScroll=='false')
 return false;
   this.setDynScrollPageSize();
 
 var tmpAr = new Array(0)
 if(fl && fl=='up'){
 this.dynScrollPos = Math.max(this.dynScrollPos-this.dynScrollPageSize,0);
}else if(fl && fl=='dn' && this.dynScrollPos+this.dynScrollPageSize<this.rowsCol.length){
 if(this.dynScrollPos+this.dynScrollPageSize+this.rowsBufferOutSize>this.rowsCol.length){
 this.addRowsFromBuffer()
}
 this.dynScrollPos+=this.dynScrollPageSize
}
 var start = Math.max(this.dynScrollPos-this.dynScrollPageSize,0);
 for(var i = start;i<this.rowsCol.length;i++){
 if(i>=this.dynScrollPos && i<this.dynScrollPos+this.dynScrollPageSize){
 tmpAr[tmpAr.length] = this.rowsCol[i];
}
 this.rowsCol[i].removeNode(true);
}
 for(var i=0;i<tmpAr.length;i++){
 this.obj.childNodes[0].appendChild(tmpAr[i]);
 if(this.obj.offsetHeight>this.objBox.offsetHeight)
 this.dynScrollPos-=(this.dynScrollPageSize-i)
}
 this.setSizes()


}
 
 this.setDynScrollPageSize = function(){
 if(this.dynScroll && this.dynScroll!='false'){
 var rowsH = 0;
 try{
 var rowH = this.obj._rows(0).scrollHeight;
}catch(er){
 var rowH = 20
}
 for(var i=0;i<1000;i++){
 rowsH = i*rowH;
 if(this.objBox.offsetHeight<rowsH)
 break
}
 this.dynScrollPageSize = i+2; this.rowsBufferOutSize = this.dynScrollPageSize*4
}
}



 
this.dhx_attachEvent=function(original,catcher){
 if((!this[original])||(!this[original].dhx_addEvent)){
 var z=new this.dhx_eventCatcher(this);
 z.dhx_addEvent(this[original]);
 this[original]=z;
}
 this[original].dhx_addEvent(catcher);
}
 
this.dhx_eventCatcher=function(obj){
 var dhx_catch=new Array();
 var m_obj=obj;
 var z=function(){
 if(dhx_catch)
 var res=true;

 for(var i=0;i<dhx_catch.length;i++)
 if(!dhx_catch[i].apply(m_obj,arguments))res=false;
 return res;
}
 z.dhx_addEvent=function(ev){
 if(typeof(ev)!="function")
 ev=eval(ev);
 if(ev)
 dhx_catch[dhx_catch.length]=ev;
}
 return z;
}

 
  
 this.setOnRowSelectHandler = function(func,anyClick){
 this.dhx_attachEvent("onRowSelect",func);
 this._chRRS=(!convertStringToBoolean(anyClick));
}


 
 this.setOnScrollHandler = function(func){
 this.dhx_attachEvent("_onSCRL",func);
}

 
 this.setOnEditCellHandler = function(func){
 this.dhx_attachEvent("onEditCell",func);
}
 
 this.setOnCheckHandler = function(func){
 this.dhx_attachEvent("onCheckbox",func);
}

 
 this.setOnEnterPressedHandler = function(func){
 this.dhx_attachEvent("onEnter",func);
}

 
 this.setOnBeforeRowDeletedHandler = function(func){
 this.dhx_attachEvent("onBeforeRowDeleted",func);
}
 
 this.setOnRowAddedHandler = function(func){
 this.dhx_attachEvent("onRowAdded",func);
}

 
 this.setOnGridReconstructedHandler = function(func){
 this.dhx_attachEvent("onGridReconstructed",func);
}
 



 
 this.getPosition = function(oNode,pNode){

 if(!pNode)
 var pNode = document.body

 var oCurrentNode=oNode;
 var iLeft=0;
 var iTop=0;
 while((oCurrentNode)&&(oCurrentNode!=pNode)){ iLeft+=oCurrentNode.offsetLeft-oCurrentNode.scrollLeft;
 iTop+=oCurrentNode.offsetTop-oCurrentNode.scrollTop;
 oCurrentNode=oCurrentNode.offsetParent;}

⌨️ 快捷键说明

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