📄 dbgrid.htc
字号:
oCopyDataXML = null;
oPreviousRowXMLData = null;
oTitleXML = null;
oControl = null;
oTitle = null;
oTitleTable = null;
oTitleTR = null;
oTitleTD = null;
oTitleInnerDiv = null;
oTBody = null;//内容所在容器对象
oDataTable = null;//oTBody容器对象
oTBodyTable = null;//内容table对象
oTBodyTR = null;
oTBodyTD = null;
oFirstLineDiv = null;
vTableCol = -1;
vTableRow = -1;//存储当前操作的cell
vPreviousCol = -1;
vPreviousRowForXML = -1;//存储上次操作的cell位置
vPreviousRow = -1;
vSelectionMode = "row";//选中方式(默认为单元格选中)
vPKColName = "";
allowResizeModle = true;//是否可以调整列宽
vMouseStart = 0;
bIsSelected = false;//单元格是否被选中
oSortBtn = null;//排序按钮
curScrollLeftStatus = 0;
curScrollTopStatus = 0;
oEditor = null;//当前输入框
oCurCell = null;//当前Cell
curContent = null;//当前cell中的内容
curPage = 1;//当前页
oPageSize = 20;//每页显示的记录数,默认为20条
arrCheckedRow = null;
arrCheckedRow = new Array();
///////////////////////////////////////////////////////////
while(element.all.length > 0){
objLeafElement = element.all(element.all.length - 1);
while(objLeafElement.childNodes.length > 0){
objLeafElement = objLeafElement.childNodes(0);
}//End of while
if(objLeafElement.parentElement)
objLeafElement.parentElement.removeChild(objLeafElement);
if(objLeafElement.parentNode)
objLeafElement.parentNode.removeChild(objLeafElement);
objLeafElement = null;
}//End of for
}//End of clear
function lostFocus(){//焦点消失/
window.document.attachEvent("onmousedown",clickDocument);
}
function clickDocument(){
if(oEditor==null) return;
if(funVerifyInputWhenBlur() == -1){
return(-1);
}
var objSrc = window.event.srcElement;
if(element.contains(objSrc)) return;
window.document.detachEvent("onmousedown",clickDocument);
oEditor.style.display = "none";
oTBodyTable.rows(vPreviousRow).cells(vPreviousCol).style.color = "#000000";
}
function keydownTBodyTable(){//移动光标键进行cell或tr之间的移动
//
var vKeyCode = window.event.keyCode;
if(vKeyCode > 40 || vKeyCode < 37) return;
if(vTableRow < 0 || vTableCol < 0) return;
switch(vKeyCode){
case 37: //左
if(vSelectionMode != "row") selectTable(false);
if(vTableCol == 0) tableCol = oTBodyTable.rows(0).cells.length - 1; //到达表格左端则返回右端
else vTableCol--;
if(vSelectionMode != "row") selectTable(true);
scrollRowToView(vTableRow,vTableCol);//移动当前行到可视范围
showRC();
evtClickCell.fire();
break;
case 38: //上
selectTable(false);
if(vTableRow == 0) tableRow = oTBodyTable.rows.length - 1; //到达顶端返回底端
else vTableRow--;
selectTable(true);
scrollRowToView(vTableRow);
showRC();
evtClickCell.fire();
break;
case 39: //右
if(vSelectionMode != "row") selectTable(false);
if(vTableCol == oTBodyTable.rows(0).cells.length - 1) vTableCol = 0;
else vTableCol++;
if(vSelectionMode != "row") selectTable(true);
scrollRowToView(vTableRow,vTableCol);
showRC();
evtClickCell.fire();
break;
case 40: //下
selectTable(false);
if(vTableRow == oTBodyTable.rows.length - 1) tableRow = 0; //到达底端返回顶端
else vTableRow++;
selectTable(true);
scrollRowToView(vTableRow);
showRC();
evtClickCell.fire();
break;
}
window.event.returnValue = false;
}
function scrollRowToView(argRow,argCol){
var objRow,objCell;
var vTemp;
if(typeof(argRow) == "undefined") return; //至少需要argRow参数
objRow = oTBodyTable.rows(argRow); //要移动的row
if(objRow==null) return;
vTemp = objRow.offsetTop - oTBody.scrollTop;
if(vTemp < 0){
oTBody.scrollTop += vTemp;
}else{
vTemp = objRow.offsetTop + objRow.offsetHeight - (oTBody.scrollTop + oTBody.offsetHeight);
if(vTemp > 0){
oTBody.scrollTop += vTemp + 16;
}
}
if(typeof(argCol) == "undefined") return;
objCell = oTBodyTable.rows(argRow).cells(argCol);
if(objCell==null) return;
vTemp = objCell.offsetLeft - oTBody.scrollLeft;
if(vTemp < 0){
if(argCol == 0) oTBody.scrollLeft = 0;
else oTBody.scrollLeft += vTemp;
}else{
vTemp = objCell.offsetLeft + objCell.offsetWidth - (oTBody.scrollLeft + oTBody.offsetWidth);
if(vTemp > 0){
oTBody.scrollLeft += vTemp + 16;
}
}
}
function initialize(){
initGlobalCommon();
vTableCol = -1;
vTableRow = -1;
if(!oTitleXML) return(-1);
getCopyDataXML();
createTitle();
oDataTable = element.document.createElement("<div/>");
oDataTable.oncontextmenu = function(){event.returnValue = false;};
oDataTable = element.appendChild(oDataTable);
fillInTable(); //用XML数据填充表并显示
if(hasController=="true" && oControl==null){
viewController();
}
refresh();
if(oTitle && oTBody){
oSortBtn = element.document.createElement("<span class='phms_sortBtnSpan'></span>");
oSortBtn.innerHTML = "<v:polyline points='0,6 4,0 8,6 0,6' class='phms_sortBtn' fillcolor='black' strokcolor='red'/><?xml:namespace prefix='v' urn='schemas-microsoft-com:vml'/>";
}
element.runtimeStyle.visibility = "visible";
createEditor();
if(oDataXML!=null) objDeletedXMLFragement = inputXML();
}
function initGlobalCommon(){
if(!element.document.parentWindow.__objGlobalCommonInst){//如果还没有初始化
var oWindow;
oWindow = element.document.parentWindow;
oWindow.__objGlobalCommonInst = oWindow.parent.__objGlobalCommonInst;
__objGlobalCommonInst = oWindow.__objGlobalCommonInst;
}
return __objGlobalCommonInst ? true : false;
}
function getCellText(argRow,argCol){
var vRow = parseInt(argRow);
var vCol = parseInt(argCol);
if(vRow > oTBodyTable.rows.length - 1 || vRow < 0) return null;
if(vCol > oTBodyTable.rows(0).cells.length - 1 || vCol < 0) return null;
return oTBodyTable.rows(vRow).cells(vCol).innerText;
}
function strSplit(aimStr){
var s;
var tmpStr = "sum(//r/";
s = aimStr.split("+");
for(var i=0; i<s.length; i++){
if(i!= s.length -1){
tmpStr += s[i] + ") + sum(//r/";
}else{
tmpStr += s[i] + ")";
}
}
return tmpStr;
}
function viewPageFooter(){//页脚控制器
var objDivFPC;
var objCellFPC;
var intResult;
if(!oTBodyTable.rows(0)) return(-1);
oDivPageFooter = element.document.createElement("<div/>");
if(!oTBody) return(-1);
oDivPageFooter = oTBody.insertAdjacentElement("beforeEnd", oDivPageFooter);
oTabPageFooter = element.document.createElement("<table cellspacing='1' cellpadding='0' border='0' class='phms_grid_oTBodyTable'></table>");
oTabPageFooter.insertRow();
for(var i = 0; i < oTBodyTable.rows(0).cells.length; i++){
objDivFPC = element.document.createElement("<div class='phms_grid_oFirstLineDiv'></div>");
objCellFPC = oTabPageFooter.rows(0).insertCell();
objCellFPC.align = "center";
objDivFPC = objCellFPC.insertAdjacentElement("beforeEnd", objDivFPC);
objDivFPC.style.background = "#dddddd";
objDivFPC.style.pixelWidth = oTabPageFooter.rows(0).cells(i).childNodes(0).offsetWidth;
objDivFPC.style.pixelHeight = oTabPageFooter.rows(0).cells(i).childNodes(0).offsetHeight;
if(oTitleTable.rows(0).cells(i).childNodes(0).calculateCol){
intResult = __objGlobalCommonInst.transformXML(oCopyDataXML, '<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:fo=\"http://www.w3.org/1999/XSL/Format\"><xsl:variable name=\"vSum\" select=\"' + strSplit(oTitleTable.rows(0).cells(i).childNodes(0).calculateCol) + '\"/><xsl:template match=\"/\"><xsl:value-of select=\"$vSum\"/></xsl:template></xsl:stylesheet>').replace('<?xml version=\"1.0\" encoding=\"UTF-16\"?>', "");
}else{
intResult = __objGlobalCommonInst.transformXML(oCopyDataXML, '<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:fo=\"http://www.w3.org/1999/XSL/Format\"><xsl:variable name=\"vSum\" select=\"sum(//r/@' + oTitleTable.rows(0).cells(i).childNodes(0).rpropname + ')\"/><xsl:template match=\"/\"><xsl:value-of select=\"$vSum\"/></xsl:template></xsl:stylesheet>').replace('<?xml version=\"1.0\" encoding=\"UTF-16\"?>', "");
}
if(intResult == "NaN"){//无法进行统计的列
objDivFPC.innerText = "";
}else{
objDivFPC.innerText = intResult;
}
with(objDivFPC){
if(i==0 && hasFixedCol=="1"){//显示索引列并且是第一行
style.width = oTBodyTable.rows(0).cells(i).offsetWidth;
innerText = "合计";
}else{
style.width = oTBodyTable.rows(0).cells(i).offsetWidth;
}
}
}
oTabPageFooter = oDivPageFooter.insertAdjacentElement("beforeEnd", oTabPageFooter);
}
///////////////////////////////////////////////////////////////////////////////////////////
//////////////////以下是分页控制器代码///////////////
///////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -