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

📄 dbgrid.htc

📁 HTC,demo WEB用于。 超大型
💻 HTC
📖 第 1 页 / 共 5 页
字号:
          argParent.appendChild(objSplitBar);
        }

        function splitStart(){ // 拖动表头开始

          window.event.cancelBubble = true; 
          if(oEditor && oEditor.style.display != "none") return;
          if (allowResizeModle.toString() ==  "false") return ;
        
          vMouseStart  =  window.event.clientX;
          objSplitBar  =  window.event.srcElement; // 准备活动的 splitbar   
          
          var oSplitLine = element.document.createElement("<span class='phms_grid_splitLine'></span>");
          oSplitLine = objSplitBar.appendChild(oSplitLine);
          oSplitLine.style.pixelHeight = vHeight;

          objSplitBar.setCapture(true); 
          objSplitBar.attachEvent("onmousemove",split);
        }

        function split(){
          objSplitBar.children(0).style.left  =  window.event.clientX - vMouseStart + 4; 
        }

        function splitEnd(){

          if (allowResizeModle.toString() ==  "false") return ;
          if(objSplitBar ==  null) return;

          var oCurTitleDiv = objSplitBar.parentElement.parentElement.previousSibling.children(0);// 当前点击的div
          objSplitBar.releaseCapture(); 
          objSplitBar.detachEvent("onmousemove",split); 
          if(objSplitBar.children(0))
            objSplitBar.children(0).removeNode(true); 
          objSplitBar = null;

          vMoveLen  =  window.event.clientX - vMouseStart; //移动的距离
          vCellIndex = oCurTitleDiv.parentNode.cellIndex; //当前点击 DIV 所在 TD 的索引号

          if(vMoveLen!=0){

            oCurTitleDiv.style.pixelWidth = oCurTitleDiv.offsetWidth + vMoveLen;

            if(oCurTitleDiv.offsetWidth < oCurTitleDiv.MinWidth - 4) //取最小宽度
              oCurTitleDiv.style.pixelWidth  =  oCurTitleDiv.MinWidth - 4;
            if(oCurTitleDiv.offsetWidth > oCurTitleDiv.MaxWidth - 4) //取最大宽度
              oCurTitleDiv.style.pixelWidth = oCurTitleDiv.MaxWidth - 4;
            if(oTBodyTable && oTBodyTable.rows(0)!=null)
              oTBodyTable.rows(0).cells(vCellIndex).childNodes(0).style.pixelWidth = oCurTitleDiv.style.pixelWidth;
          }
          vMouseStart  =  null;
          oCurTitleDiv  =  null;
          evtOnDrag.fire(); 
        }

        function adjustBodyWidth(){ 
          if(oTitle==null || oTBody==null) return;
          if(hasTitle.toString() == "true") oTBody.style.pixelWidth = oTBodyTable.offsetWidth + 1;
          else oTBody.style.pixelWidth = vWidth - 16; //如果没有表头就不能根据data table来确定data div的宽度
          oTitle.style.pixelWidth = oTBodyTable.offsetWidth + 1;
        }

        function selectScrollTrack(){ //跟随鼠标滚动选择
          var objSrc = window.event.srcElement;

          for(var i = 0; i < 3; i++){
            if(objSrc.tagName.toLowerCase() == "tr") break;
            objSrc = objSrc.parentElement;
          }
          if(i == 3) return;
          if(objSrc.rowIndex == 2) return;
          selected(objSrc,true); //选中当前行
          objScrollTrack = objSrc;
        }

        function cancelSelectScrollTrack(){ //取消鼠标跟随中的前次选择
          if(objScrollTrack) selected(objScrollTrack,false); //取消前次选中
        }


		function selectTable(bIsSelected){ 
			try{
			var collCells;
			if(vTableRow < 0 || vTableCol < 0) return; //如果尚未在表格中使用鼠标选择则不能进行 key选择

				collCells = oTBodyTable.rows(vTableRow).cells;
				if(vSelectionMode == "cell"){ //单元格选择
				selected(collCells(vTableCol),bIsSelected);
				}else{ //行选
				for(i = 0; i < collCells.length; i++){
					selected(collCells(i),bIsSelected);
				}
				}
			}catch(e){}
		}

		function selected(objSrc,bIsSelected){ //选中某一对象即改变其背景和前景色,参数为对象、是否选中标志
			try{
			////增加合计行后的处理////////////////////////
				if(objSrc.tagName.toLowerCase() == "td"){
					var objSrcTR = objSrc.parentElement;
					if(booleanHasTotalLine){
						if(parseInt(hasFixedCol) == 1){//有索引列
							if(objSrcTR.cells[1].innerText == "合计"){
								vTableRow = -1;
								return;	
							}	
						}else{//无索引列
							if(objSrcTR.cells[0].innerText == "合计"){
								vTableRow = -1;
								return;
							}
						}
					}
				}
			/////////////////////
			if(bIsSelected){  
				objSrc.runtimeStyle.color  = selectForeColor;
				objSrc.runtimeStyle.backgroundColor = selectBgColor;
			}else{
				with(objSrc.runtimeStyle){
				color = "";
				backgroundColor = "";
				}
			}
			}catch(e){}
		}

        function clickTitle(){ //点击标题行
        
          var intCurCellIndex = 0;
		 if(oEditor && oEditor.style.display != "none") return;
           var vAllowSort = event.srcElement.allowSort;          
          if(vAllowSort=="false") return;//该列不允许排序
          
          var oSrc = null;
          oSrc = window.event.srcElement;    
          for(var i = 0; i < 3; i++){
            if(oSrc.tagName.toLowerCase() == "div" && oSrc.getAttribute("rpropname")){
              intCurCellIndex = oSrc.parentElement.cellIndex;
              break;
            }
            oSrc = oSrc.parentElement;
          }

          if(i == 3) return;//没有找到div        
          

          var vOrder = null;//排序规则          
          
          if(oSrc == oSortBtn.parentElement){//如果点击的是同一列
            if(oSortBtn.children(0).style.flip == "y"){
              oSortBtn.children(0).style.flip = "";
              vOrder = "ascending";
            }else{
              oSortBtn.children(0).style.flip = "y";
              vOrder = "descending";
            }
          }else{//点击的不是同一列
            oSortBtn.children(0).style.flip = "";
            oSortBtn = oSrc.appendChild(oSortBtn);
            vOrder = "ascending";
          }       

          sort(intCurCellIndex,oSrc.getAttribute("rpropname"),vOrder); //开始排序   

        }

        function sort(curCellIndex,colName,order){ //对指定列按指点规则进行排序
          var vXslt;
	        var strDataXML;
	        var objNode;
	        var vFirstRowCellText = "";
	        
	        if(!oTBodyTable.rows(0)) return;
	        vFirstRowCellText = oTBodyTable.rows(0).cells(curCellIndex).innerText;//数据表第一行当前列的内容
	        if(isNaN(vFirstRowCellText) || vFirstRowCellText == ""){//不是数字列	          
	          //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='*/*'><xsl:sort select='@" + colName + "' order='" + order + "'/><xsl:copy-of select='.'/><xsl:copy-of select='@*'/></xsl:for-each></root></xsl:template></xsl:stylesheet>";
	          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="@' + colName + '" 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>';
	        }else{//数字列
	          //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='*/*'><xsl:sort select='format-number(@" + colName + ",\"00000.00000\")' order='" + order + "'/><xsl:copy-of select='.'/><xsl:copy-of select='@*'/></xsl:for-each></root></xsl:template></xsl:stylesheet>";
	          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>';
	        }

	        strDataXML = oCopyDataXML.xml.replace(/xmlns:fo=\"\"/g, "");
	        objNode = oCopyDataXML.removeChild(oCopyDataXML.childNodes(0));
	        objNode = null;
	        //window.prompt("排序之前",strDataXML);
          oCopyDataXML = inputXML(__objGlobalCommonInst.transformXML(strDataXML,vXslt)); //xml依据排序转换
          fillInTable(); //填充表格
		  tableRow = -1;
        }


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

          var oXSLT = null;//XSLT对象
          var vXslt = null;//xslt字符串
          var vFirstRow = "";//第一行xslt
          var vOtherRow = "";//其它行xslt
          var vRowTemp = ""; //临时xslt
          var vFixedCol = "";
          var strRowIDS = "";//用来保存通过checkBox选中行的__rowid所组成的字符串
          var tmpStr = "";
          var intCurRecordCountNumber;
          
          if(!oTitleXML) return;
          
          if(oTBody) oTBody.removeNode(true);//删除原有数据表容器
          oTBody = null;

          oTBody = element.document.createElement("<div class='phms_grid_oTBody'></div>");         

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

          refresh();
          
          var visibleColsList = oTitleXML.selectNodes("/*/*[not(@visible = 'false')]"); 
          //构造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_grid_oTBodyTable' bgcolor='" + dataBgColor + "' border = '0'  cellspacing = '1' cellpadding = '0' vhinfo='tbody'><xsl:for-each select = '*/*'><xsl:choose><xsl:when test='position() = 1'><tr bgcolor='" 
          + dataBgColor + "' height='18'><xsl:attribute name='__rowid'><xsl:value-of select='@__rowid'/></xsl:attribute>";

          for(var i = 0; i < visibleColsList.length; i++){ //获取列值
            var rowCnt = "<xsl:value-of select='position()'/>";//行位置         
  
              if(visibleColsList(i).getAttribute("edittype")=="c"){//如果该列为checkBox列
                  vRowTemp = "<input id='ichk' type='checkbox' class='phms_r_c'></input>";                
              }else{
                  vRowTemp = "";
              }//End of if edittype = "c"
              
              if(visibleColsList(i).getAttribute("calculateCol")){
                vRowTemp += "<xsl:value-of select='" + visibleColsList(i).getAttribute("calculateCol") + "'/>";                     
              }else{
                vRowTemp += "<xsl:value-of select='@" + visibleColsList(i).getAttribute("rpropname") + "'/>";                     
              }
              
              vFirstRow += "<td align='center' rpropname='" + visibleColsList(i).getAttribute("rpropname") + "' dataType='" + visibleColsList(i).getAttribute("DataType") + "'>" + "<div>" + vRowTemp + "</div></td>";
              vOtherRow += "<td align='center' rpropname='" + visibleColsList(i).getAttribute("rpropname") + "'  dataType='" + visibleColsList(i).getAttribute("DataType") + "'>" + vRowTemp + "</td>";
          }

          if(parseInt(hasFixedCol) == 1){ //生成fixed col xslt
            vFixedCol = "<td class='phms_grid_index' align='" +  fixedColAlign + "' style='width:50;color:" + fixedColForeColor + "; background:" + fixedColBGColor + ";";
            vFirstRow = vFixedCol + "'><div class = 'phms_grid_indexDiv'><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;
          }
         // 
          if(!oCopyDataXML.selectSingleNode("//r")){
            vXslt += "<xsl:attribute name='bgcolor'>" + oddTRColor + "</xsl:attribute>" + vFirstRow + "</tr></xsl:when><xsl:otherwise><xsl:choose><xsl:when test='position() &gt;1'><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>";
          }else{
            vXslt += "<xsl:attribute name='bgcolor'>" + oddTRColor + "</xsl:attribute>" + vFirstRow + "</tr></xsl:when><xsl:otherwise><xsl:choose><xsl:when test='position() &gt;=1 and position() &lt;=last()'><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; 
          tmpStr = oCopyDataXML.xml;
          tmpStr = tmpStr.replace(/xmlns:fo=\"\"/g,"").replace(/1900-01-01/g,"");
          //window.prompt("++++",__objGlobalCommonInst.transformXML(tmpStr,vXslt));
          //debugger;
          oTBody.insertAdjacentHTML("afterBegin",__objGlobalCommonInst.transformXML(tmpStr,vXslt)); //插入转换后的HTML
          ///////////////
          
          ////增加checkBox//2005-7-14 hzh//////////////////////////////////////////////////////////////////////////
          if(parseInt(hasFixedCol) != 1) intFirstColIndex = 0;
          if(booleanHasCheckBox && oTitleTable && oTitle){
			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 type='checkbox' idx='0' title='select all or not' disabled style='visibility:hidden'>";
			objTempTD.firstChild.onclick = processCheckBoxClickEnent;

			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>");

⌨️ 快捷键说明

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