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

📄 flexgrid.htc

📁 HTC,demo WEB用于。 超大型
💻 HTC
📖 第 1 页 / 共 5 页
字号:
			  }

			  function inputXML(argSource){ //生成XML DOM对象

				if(typeof(argSource) == "string"){//处理XML数据岛
					if((!(argSource.search(/\./) != -1 && argSource.search(/\</) == -1)) &&  (!(argSource.search(/\</) != -1))){
						try{
							argSource = eval(window.document.all(argSource));
						}catch(e){
						}
					}
				}
				if(!__objGlobalCommonInst){
					window.__objGlobalCommonInst = window.dialogArguments.__objGlobalCommonInst;
				}
				return __objGlobalCommonInst.inputXML(argSource);

			}


			  function createSplitBar(argParent){ //创建用来调整列宽的Span
				  objSplitBar = window.document.createElement("<span class='phms_grid_split'></span>");
				  objSplitBar.innerText = " ";
				  with(objSplitBar){
					  onmousedown = splitStart; //起始
					  onmouseup = splitEnd; //结束
				  }
				  argParent.appendChild(objSplitBar);
			  }

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

				  window.event.cancelBubble = true;
				  if (allowResizeModle.toString() ==  "false") return ;

				  vMouseStart  =  window.event.clientX;
				  objSplitBar  =  window.event.srcElement; // 准备活动的 splitbar

				  var oSplitLine = window.document.createElement("<span class='phms_grid_splitLine'></span>");//用来调整表头的span
				  oSplitLine = objSplitBar.appendChild(oSplitLine);
				  oSplitLine.style.pixelHeight = height;

				  objSplitBar.setCapture(true); //开始鼠标捕获
				  objSplitBar.attachEvent("onmousemove",split); // 绑定 mousemove 事件
			  }

			  function split(){ //在 split bar' onmousemove 过程中执行
				  objSplitBar.children(0).style.left  =  window.event.clientX - vMouseStart + 4; // split line 的移动
			  }

			  function splitEnd(){// 拖动表头结束
				var oCurTitleDiv;
				var objSiblingTD;

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

				for(var i = 1; i < arrSortDiv.length; i++){
					if(arrSortDiv[i].id == objSplitBar.parentElement.id){
					oCurTitleDiv = oTitleTable.all(arrSortDiv[i-1].id);
					break;
					}
			}

          objSplitBar.releaseCapture(); //解除鼠标捕获
				  objSplitBar.detachEvent("onmousemove",split); //解除mousemove事件的绑定
				  if(objSplitBar.children(0)){
				     objSplitBar.children(0).removeNode(true); //移除split line
				  }
				  objSplitBar = null;

          if(!oCurTitleDiv) return(-1);

				  vMoveLen  =  window.event.clientX - vMouseStart; //移动的距离

				  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.rows(0)!=null && oCurTitleDiv.id!="")
            oTBodyTable.rows(0).all(oCurTitleDiv.id).style.pixelWidth = oCurTitleDiv.style.pixelWidth;

            if(oTBodyTable && oTBodyTable.all(arrSortDiv[i].id))
				      oTBodyTable.all(arrSortDiv[i].id).style.pixelWidth = oCurTitleDiv.parentElement.offsetWidth; //title's cell宽度
				  }

				  vMouseStart  =  null;
				  oCurTitleDiv  =  null;
				  adjustGridWidth(parseInt(hasFixedCol)); //调整title body table三者宽度
				  evtOnDrag.fire(); //激发拖动事件

			  }

			  function adjustBodyWidth(){ //调整三部分宽度,加上偏移量,并产生校调晃动
			    if(oTitle==null || oTBody==null) return;
				  if(hasTitle.toString() == "true") oTBody.style.pixelWidth = oTBodyTable.offsetWidth + 1;
				  else oTBody.style.pixelWidth = width - 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 clickTable(){//点击FlexGrid组件cell时处理事件

				  var oSrc,i;
				  var vRowTemp;
				  var n;
				  var objParentTR;
				  var boolInArr = false;
				  if(!booleanHasCheckBox){
					selectTable(false); //取消前次的table选择
				  }
				  oSrc = window.event.srcElement;

				  for(i = 0; i < 2; i++){ //取得点击的td对象
					  if(oSrc.tagName.toLowerCase() == "td") break;
					  oSrc = oSrc.parentElement;
				  }
				  if(i == 2) return; //说明没有找到td元素,返回

				  vTableRow = oSrc.parentElement.rowIndex;//行
				  vTableCol = oSrc.cellIndex;//列
				  if(vSelectionMode == "row" && vTableCol < 0) vTableCol = 1;
				  if(!booleanHasCheckBox){
					selectTable(true); //选择当前点击的cell或者row
				  }
				  showRC();
				  evtClickCell.fire();
		  }


		  function showRC(){//显示当前cell的行列坐标
			var r;
			var c;

			if(hasController=="true" && oControl!=null){
				oControl.curRowCaption.style.visibility = "visible";
				oControl.curColCaption.style.visibility = "visible";
				r = parseInt(tableRow) + 1;
				c = parseInt(tableCol) + 1;
				if(r>=0 && c>=0){
				oControl.curRow.value = r;
				oControl.curCol.value = c;
				}
			}
		  }

		  function selectTable(bIsSelected){ //选择或者取消由 tableCol 和 tableRow 指定的单元格或其所在的表行(包括fixed col和对应的title cell)
			  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 == "合计"){
								tableRow = -1;
								return;	
							}	
						}else{//无索引列
							if(objSrcTR.cells[0].innerText == "合计"){
								tableRow = -1;
								return;
							}
						}
						
					}
				}
			/////////////////////
				  if(bIsSelected){
						  objSrc.runtimeStyle.color  = selectForeColor;
						  objSrc.runtimeStyle.backgroundColor = selectBgColor;
				  }else{
					  with(objSrc.runtimeStyle){
						  color = "";
						  backgroundColor = "";
					  }
				  }
			  }catch(e){
				  //错误丢弃
			  }
		  }

			  function clickTitle(){ //点击标题行
          var vAllowSort;
          var oSrc = null;
          var vOrder = null;//排序规则
          var strCurCellInnerText = 0;

          oSrc = event.srcElement;
          if(oSrc.tagName != "TD"){
            window.event.cancelBubble = true;
          }else{
            oSrc = oSrc.all.tags("DIV")(0);
          }


          vAllowSort = oSrc.allowSort;
          if(vAllowSort=="false") return;//该列不允许排序
          if(!oTBodyTable.rows[0]) return;
				  for(var i = 0; i < 3; i++){
					  if(oSrc.tagName.toLowerCase() == "div" && oSrc.getAttribute("rpropname")){
					    for(var j=0;j<arrSortDiv.length;j++){
					      if(arrSortDiv[j].rpropname == oSrc.getAttribute("rpropname")){
					        strCurCellInnerText = oTBodyTable.rows[0].all(arrSortDiv[j].id).innerText;
					        break;
					      }
					    }
					    break;
					  }
					  oSrc = oSrc.parentElement;
				  }

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

				  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(strCurCellInnerText,oSrc.getAttribute("rpropname"),vOrder); //开始排序

			  }

			  function sort(strCurCellInnerText,colName,order){ //对指定列按指点规则进行排序
				  var vXslt;

				  if(isNaN(parseInt(strCurCellInnerText)) || strCurCellInnerText == ""){//不是数字列
					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{//数字列

⌨️ 快捷键说明

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