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

📄 flexgrid.htc

📁 HTC,demo WEB用于。 超大型
💻 HTC
📖 第 1 页 / 共 5 页
字号:
					vXslt = "<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'><xsl:output method='xml' omit-xml-declaration='no' encoding='gb2312' version='1.0' indent='yes'/><xsl:template match='/'><root><xsl:for-each select='*/*[@__rowid != \"\"]'><xsl:sort select='format-number(@" + colName + ",\"00000.00000\")' order='" + order + "'/><xsl:copy-of select='.'/><xsl:copy-of select='@*'/></xsl:for-each><xsl:for-each select='*/*[@__rowid = \"\"]'><xsl:copy-of select='.'/><xsl:copy-of select='@*'/></xsl:for-each></root></xsl:template></xsl:stylesheet>";
				  }

				  oCopyDataXML = inputXML(__objGlobalCommonInst.transformXML(oCopyDataXML,vXslt)); //xml依据排序转换
					fillInTable(); //填充表格
					mergeCol();
			  }


			  function fillInTable(){ //生成FlexGrid组件数据表,用XML数据填充

				  var oXSLT = null;//XSLT对象
				  var vXslt = null;//xslt字符串
				  var vFirstRow = "";//第一行xslt
				  var vOtherRow = "";//其它行xslt
				  var vRowTemp = ""; //临时xslt
				  var vFixedCol = "";
				  var vTitleHTMLDOM;
				  var strRowIDS = "";//用来保存通过checkBox选中行的__rowid所组成的字符串
				  var rowCnt;

				  if(oTitleXML == null) return;

				  if(oTBody) oTBody.removeNode(true);//删除原有数据表容器
				  oTBody = null;

				  oTBody = window.document.createElement("<div class='phms_flexGrid_oTBody'></div>");

				  if(oTBodyTable) oTBodyTable.removeNode(true); //删除原有表格
				  oTBodyTable = null;
				  refresh();

				  //构造xslt
				  vXslt = "<xsl:stylesheet version = '1.0' xmlns:xsl = 'http://www.w3.org/1999/XSL/Transform'><xsl:output method = 'html'/><xsl:template match = '/'><table class='phms_flexGrid_oTBodyTable' bgcolor='"
				  + dataBgColor + "' border = '0'  cellspacing = '1' cellpadding = '0' vhinfo='tbody'><xsl:for-each select = '*/*'><xsl:choose><xsl:when test='position() = " + getFirstPosition() + "'><tr bgcolor='"
				  + dataBgColor + "' height='18'><xsl:attribute name='__rowid'><xsl:value-of select='@__rowid'/></xsl:attribute>";

				  for(var i = parseInt(hasFixedCol); i < arrSortDiv.length; i++){ //获取列值
				      rowCnt = "<xsl:value-of select='position()'/>";//行位置

					    vFirstRow += "<xsl:if test='@" + arrSortDiv[i].rpropname + "'><td align='center' bDelete='n' rowSp='1' bgcolor='" + oddTRColor + "' rpropname='" + arrSortDiv[i].rpropname + "' dataType='" + arrSortDiv[i].dataType + "'><div style='height:100%;padding-top:4' id='" + arrSortDiv[i].id + "'><xsl:if test='@" + arrSortDiv[i].rpropname + "'><xsl:value-of select='@" + arrSortDiv[i].rpropname + "'/></xsl:if></div></td></xsl:if>";
					    vOtherRow += "<xsl:if test='@" + arrSortDiv[i].rpropname + "'><td align='center' bDelete='n' rowSp='1' rpropname='" + arrSortDiv[i].rpropname + "' dataType='" + arrSortDiv[i].dataType + "'><xsl:value-of select='@" + arrSortDiv[i].rpropname + "'/></td></xsl:if>";
				  }

				  if(parseInt(hasFixedCol) == 1){ //生成fixed col xslt
					  vFixedCol = "<td class='phms_flexGrid_index' align='" +  fixedColAlign + "' style='padding-top:4;color:" + fixedColForeColor + "; background:" + fixedColBGColor + ";";
					  vFirstRow = vFixedCol + "'><div class = 'phms_grid_indexDiv' id='" + arrSortDiv[0].id + "'><font face='arial' size='1'><xsl:value-of select='position()'/></font></div></td>" + vFirstRow;
					  vOtherRow = vFixedCol + "'><font face='arial' size='1'>" +  rowCnt + "</font></td>" + vOtherRow;
				  }

				  vXslt += vFirstRow + "</tr></xsl:when><xsl:otherwise><xsl:choose><xsl:when test='position() &gt;=" + getFirstPosition() + " and position() &lt;=" + getLastPosition() + "'><tr><xsl:attribute name='__rowid'><xsl:value-of select='@__rowid'/></xsl:attribute><xsl:if test='position() mod 2 = 0'><xsl:attribute name='bgcolor'>"
				  + evenTRColor + "</xsl:attribute></xsl:if><xsl:if test='position() mod 2 != 0'><xsl:attribute name='bgcolor'>" + oddTRColor + "</xsl:attribute></xsl:if>" + vOtherRow +  "</tr></xsl:when></xsl:choose></xsl:otherwise></xsl:choose></xsl:for-each></table></xsl:template></xsl:stylesheet>";


				  if(oCopyDataXML == null) return;
				 // window.prompt("",__objGlobalCommonInst.transformXML(oCopyDataXML,vXslt));
				  oTBody.insertAdjacentHTML("afterBegin",__objGlobalCommonInst.transformXML(oCopyDataXML,vXslt)); //插入转换后的HTML
				  vReportDataTableInnerHTML = __objGlobalCommonInst.transformXML(oCopyDataXML,vXslt);
				  oTBodyTable = oTBody.childNodes(0); //数据表格对象
				  oTBodyTable.onclick = clickTable;

				  oTBody = oDataTable.insertAdjacentElement("beforeEnd",oTBody);
				  oTBody.onscroll = scrollIDL; //左右滚动事件绑定
				  
				   ///////////////
					if( booleanHasTotalLine ){//合计行
						var objTRList = oTBody.all.tags("TR");
						for( var i = (objTRList.length - 1); i > 0; i -- ){
							if( objTRList[i].__rowid == ""){			
								objTRList[i].style.color = "black";
								objTRList[i].style.fontWeight = "bold";
								objTRList[i].style.background = "#eeeeee";
								objTRList[i].height = "18";;
								for( var j = 0; j < objTRList[i].children.length; j ++ ){
									if( objTRList[i].children[j].innerText == "" ){
										objTRList[i].children[j].innerText = (isNaN(parseInt(objTRList[0].children[j].firstChild.innerText))) ? "" : 0;
									}
								}
								break;
							}
						} 
					}
					///////////////////////////
					
				  ////增加checkBox//2005-7-14 hzh//////////////////////////////////////////////////////////////////////////
					if(parseInt(hasFixedCol) != 1) intFirstColIndex = 0;
					if(booleanHasCheckBox && oTitleTable){
						var objInputList = oTitle.all.tags("input");
						if(objInputList.length){
							objInputList[0].parentElement.parentElement.removeChild(objInputList[0].parentElement);
						}
						var objTempTD = null;
						//处理表头展现
						objTempTD = window.document.createElement("<td>");
						objTempTD.innerHTML  = "<input style='font-size:1pt;width:14;height:14;visibility:hidden' type='checkbox' idx='0' title='select all or not'>";
						objTempTD.firstChild.onclick = processCheckBoxClickEnent;
						objTempTD.rowSpan = oTitleTable.rows[0].cells[0].rowSpan;
						objTempTD.style.width = 19;
						objTempTD.style.background = "#CAEAFF";
						oTitleTable.rows[0].cells[intFirstColIndex].insertAdjacentElement("beforeBegin",objTempTD);
						//处理数据表展现
						var objDataTable = oTBody.firstChild;
						for( var i = 0; i < objDataTable.rows.length; i ++ ){
							objTempTD = window.document.createElement("<td bgcolor='#eeeeee'>");
							if(objDataTable.rows[i].__rowid != ""){
								objTempTD.innerHTML  = "<input type='checkbox' idx='1'>";
								objTempTD.firstChild.onclick = processCheckBoxClickEnent;
							}
							objDataTable.rows[i].cells[intFirstColIndex].insertAdjacentElement("beforeBegin",objTempTD);
						}
						//恢复选择
						for( var i = 0; i < objDataTable.rows.length; i ++ ){
							for( var j = 0; j < objArrSelectRowIdx.length; j ++ ){
								if(objDataTable.rows[i].__rowid == objArrSelectRowIdx[j] ){
									objDataTable.rows[i].cells[intFirstColIndex].firstChild.checked = true;
									setSelectRowBgcolor(objDataTable.rows[i],true);
									break;
								}
							}
						}
					}
					////checkBox结束///////////////////////////////////////////////////////////////////////////////////////
				  adjustGridWidth(parseInt(hasFixedCol));
			}
			
			////////////////checkBox增加事件处理////////////
        function processCheckBoxClickEnent(){
			var objSrc = event.srcElement;
			if(objSrc.tagName.toLowerCase() == "input"){
				switch(objSrc.idx){
					case "0"://表头
						var objCheckBoxList = oTBody.all.tags("input");
						for( var i = 0; i < objCheckBoxList.length; i ++ ){
							if( objSrc.checked ){
								objCheckBoxList[i].checked = true;
								setSelectRowBgcolor(objCheckBoxList[i].parentElement.parentElement,true);
							}else{
								objCheckBoxList[i].checked = false;
								setSelectRowBgcolor(objCheckBoxList[i].parentElement.parentElement,false);
							}
						}
						break;
					case "1"://数据表
						objSrc.checked ? setSelectRowBgcolor(objSrc.parentElement.parentElement,true) : setSelectRowBgcolor(objSrc.parentElement.parentElement,false);
						break;
				}	
			}
        }
        
        function setSelectRowBgcolor(objRow,setFlag){//用来设置行背景 
			if(objRow.tagName.toLowerCase() == "tr"){
				for(var i = 2; i < objRow.cells.length; i ++ ){
					if(setFlag){//选则
						objRow.cells[i].style.background = selectBgColor;
						objRow.cells[i].style.color = selectForeColor;
						if(!inSelectedArray(objRow.__rowid)){
							objArrSelectRowIdx.push(objRow.__rowid);
						}
					}else{//取消选择
						objRow.cells[i].style.background = ( parseInt(objRow.rowIndex) % 2 == 0 ) ? evenTRColor : oddTRColor;
						objRow.cells[i].style.color = "black";
						removeFromArr(objRow.__rowid);
					}
				}
			}
        }
        
        function inSelectedArray(rowid){//指定的id是否在队列中
			var booleanReturn = false;
			for( var i = 0; i < objArrSelectRowIdx.length; i ++ ){
				if(objArrSelectRowIdx[i] == rowid){
					booleanReturn = true;
					break;
				}
			}
			return booleanReturn;
        }
        
        function removeFromArr(rowid){//将指定id的item从队列中删除
			var objTempArr = new Array();
			if(inSelectedArray(rowid)){//在队列中
				for(var i = 0; i < objArrSelectRowIdx.length; i ++ ){
					if(objArrSelectRowIdx[i] != rowid){
						objTempArr.push(objArrSelectRowIdx[i]);
					}
				}
				while(objArrSelectRowIdx.length){
					objArrSelectRowIdx.pop();
				}
				objArrSelectRowIdx = objTempArr;
			}
        }

        function getSelectedXMLRow(){//返回按titleXML顺序的r节点
			if(booleanHasCheckBox){//多选处理
				if(oCopyDataXML && oCopyDataXML.xml){
					var strSelectedRowXML = "";
					for( var i = 0; i < objArrSelectRowIdx.length; i ++ ){
						objTempRNode = 	oCopyDataXML.selectSingleNode("//r[@__rowid = '" + objArrSelectRowIdx[i] + "']");
						if( objTempRNode && objTempRNode.xml ){
							strSelectedRowXML += objTempRNode.xml;
						}
					}
					strSelectedRowXML = "<root>" + strSelectedRowXML + "</root>";
					return __objGlobalCommonInst.inputXML(strSelectedRowXML);
					
				}else{
					return null;
				}
			}else{
				return (oCopyDataXML && oCopyDataXML.xml && tableRow !=-1) ? oCopyDataXML.selectSingleNode("//r[@__rowid='" + oTBodyTable.rows(tableRow).__rowid + "']") : null;
			}
        }
      ///////checkBox增加事件处理结束///////////////////////////////////////////////////// 

///////////////////////////////////////////////////////////////////////////////////
    function enableAction(argBool){ //是否可动作
      if(argBool){

        for(var i = 0; i < oTitleTable.all.tags("DIV").length; i++){
          oTitleTable.all.tags("DIV")(i).parentElement.onmousedown = clickTitle; //点击title cells 排序
          oTitleTable.all.tags("DIV")(i).onmousedown = clickTitle; //点击title cells 排序
        }

      }else{
        if(oTBodyTable){
          with(oTBodyTable){
          }
        }
        if(oTitleTable) oTitleTable.onmousedown = null;

      }
    }

    function putMerge(mergeCells){ //合并data table
      switch(mergeCells){
        case "never": //不合并
                enableAction(true);
                break;
        case "col": //限制列合并
                enableAction(false);
                mergeCol();
                break;
      }
    }

    function mergeCol(){ //限制列合并,列数不允许改变,合并列上的行
      var i,j,m;
      var arrMCol = new Array();
      var boolCanntMerge = false;
      if(!mergeColNumber) return(-1);
      arrMCol = mergeColNumber.split(",");

      if(mergeColNumber){//设置了mergeColNumber
        //设置限制列合并的删除标志及跨行数量
        for(i = 0; i < oTBodyTable.rows.length-1; i++){ //到倒数第二行结束,因为最后一行不需要向下寻找同值的单元格了
          for(j = 0; j<arrMCol.length; j++){ //取出一个单元格
              if(oTBodyTable.rows[i].cells[arrMCol[j]].bDelete ==  "y") continue;
              for(m = i+1; m<oTBodyTable.rows.length; m++){
                if(oTBodyTable.rows[i].cells[arrMCol[j]].innerText ==  oTBodyTable.rows[m].cells[arrMCol[j]].innerText){
                  for(var x = j; x >= 0; x--){
                    if(oTBodyTable.rows[i].cells[arrMCol[x]].innerText !=  oTBodyTable.rows[m].cells[arrMCol[x]].innerText){
                      boolCanntMerge = true;
                      break;
                    }//End of if
                  }//End of for
                  if(!boolCanntMerge){
                    oTBodyTable.rows[i].cells[arrMCol[j]].rowSp = parseInt(oTBodyTable.rows[i].cells[arrMCol[j]].rowSp)+1;
                    oTBodyTable.rows[m].cells[arrMCol[j]].bDelete = "y";
                  }
                  boolCanntMerge = false;
                }else  break;
              }
          }
        }

⌨️ 快捷键说明

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