📄 extenddbgrid.htc
字号:
if(vTemp < 0){ //说明该行被藏于body div的上部
oTBody.scrollTop += vTemp;
}else{
vTemp = objRow.offsetTop + objRow.offsetHeight - (oTBody.scrollTop + oTBody.offsetHeight); //行底部与body div底部之间的距离
if(vTemp > 0){ //说明该行藏于body div的下部
oTBody.scrollTop += vTemp + 16;//16为div滚动条的高度
}
}
if(typeof(argCol) == "undefined") return; //两参数都指定才能给cell定位
objCell = oTBodyTable.rows(argRow).cells(argCol); //要移动的cell
if(objCell==null) return;
vTemp = objCell.offsetLeft - oTBody.scrollLeft; //cell左侧与body div的顶部之间的距离
if(vTemp < 0){ //说明该行被藏于panel div的左侧
if(argCol == 0) oTBody.scrollLeft = 0;
else oTBody.scrollLeft += vTemp;
}else{
vTemp = objCell.offsetLeft + objCell.offsetWidth - (oTBody.scrollLeft + oTBody.offsetWidth); //cell右侧与Panel div右部之间的距离
if(vTemp > 0){ //说明该行藏于panel div的右侧
oTBody.scrollLeft += vTemp + 16;//16为div滚动条的宽度
}
}
}
function initialize(){ //DBGrid组件初始化操作
initGlobalCommon();
vTableCol = -1;
vTableRow = -1;
if(!oTitleXML) return(-1);
getCopyDataXML();//获得增加了clientAct="k"属性的oCopyDataXML拷贝oCopyDataXML对象
createTitle(); //创建oTitleTable
oDataTable = element.document.createElement("<div/>");//建立数据表格的容器
oDataTable = element.appendChild(oDataTable);
fillInTable(); //用XML数据填充表并显示
if(hasController=="true" && oControl==null){
viewController();
}
refresh();//DBGrid组件位置样式初始化
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(){//初始化__objGlobalCommonInst
if(!element.document.parentWindow.__objGlobalCommonInst){//如果还没有初始化
var oWindow;
oWindow = element.document.parentWindow;
oWindow.__objGlobalCommonInst = oWindow.parent.__objGlobalCommonInst;
__objGlobalCommonInst = oWindow.__objGlobalCommonInst;
}
}
function getCellText(argRow,argCol){ //根据指定的表格行列值得到指定单元格的内容
var vRow = parseInt(argRow);
var vCol = parseInt(argCol); //传递的应该是相对地址而不是table的绝对地址
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){//返回装配好的calculateCol为XSLT统计转换串
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);
}
///////////////////////////////////////////////////////////////////////////////////////////
//////////////////以下是分页控制器代码///////////////
/////////////////////////////////////////////////////////////////
function viewController(){//分页控制器 -> Last edit 2004-12-15 AM 10:10
var conTrolStr = "";
oControl = element.document.createElement("<div></div>");
oControl.runtimeStyle.width = vWidth;
oControl = element.appendChild(oControl);
conTrolStr += "<div class='phms_dbgrid_controller' align='right'>";//div容器
conTrolStr += "<input style='position:absolute;background:#ffffff;top:4;right:40px;height:14;width:30;border:1px solid #A6C4E1;color:#4F789D;text-align:center;font-family:arial;font-size:7pt'/>";//当前页->[0]
conTrolStr += "<input style='position:absolute;background:#B3E0FF;top:3;right:142;height:14;width:20;border:0px solid red;color:#4F789D;text-align:center;font-family:arial;font-size:7pt;'readonly/>";//每页显示记录数->[1]
/////////////////////////////
conTrolStr += "<span style='position:absolute;color:#4F789D;top:5;right:520;'>行:</span>";//标签:行:->[2]
conTrolStr += "<span style='position:absolute;color:#4F789D;top:5;right:470;'>列:</span>";//标签:列:->[3]
conTrolStr += "<span style='position:absolute;color:#4F789D;top:5;right:165;'>本页</span>";//标签:(每页->[4]
conTrolStr += "<span style='position:absolute;color:#4F789D;top:5;right:290;'>共</span>";//标签:条 共->[5]
conTrolStr += "<span style='position:absolute;color:#4F789D;top:5;right:120;'>条)</span>";//标签:条)->[6]
////////////////////////////////
conTrolStr += "<input style='position:absolute;background:white;top:3;right:260;width:32;height:16;border:0px solid red;text-align:center;font-size:10;font-family:arial;color:#4F789D;' readonly/>";//记录总数->[7]
conTrolStr += "<input style='position:absolute;right:490;top:4;height:16;width:30;border:0px solid #A6C4E1;color:#4F789D;font-size:10;font-family:arial;' readonly/>";//当前行坐标->[8]
conTrolStr += "<input style='position:absolute;right:440;top:4;height:16;width:30;border:0px solid #A6C4E1;color:#4F789D;font-size:10;font-family:arial;' readonly/>";//当前列坐标->[9]
//导航按钮
conTrolStr += "<v:polyline points='0,14 0,0 0,7 8,0 8,14,0,7 0,14' style='position:absolute;top:3;right:95;' strokecolor='#7B9EBD' fillcolor='#7B9EBD' title='第一页'/>";//首页->[10]
conTrolStr += "<v:polyline points='0,7 7,0 7,14 0,7' style='position:absolute;top:3;right:80px;' strokecolor='#7B9EBD' title='上一页'/>";//上一页->[11]
conTrolStr += "<v:polyline points='7,7 0,0 0,14 7,7' style='position:absolute;top:3;right:25px;' strokecolor='#7B9EBD' title='下一页'/>";//下一页->[12]
conTrolStr += "<v:polyline points='7,14 7,0 7,7 0,0 0,14 7,7 7,14' style='position:absolute;top:3;right:10px' strokecolor='#7B9EBD' fillcolor='#7B9EBD' title='最后一页'/>";//尾页->[13]
//操作按钮
/////////删除///////////////////->[14]
conTrolStr += "<v:group style='position:absolute;right:580;top:0px;height:16px;width:13;' coordsize='14,16'>";
conTrolStr += "<v:roundrect arcsize='6554f' strokeweight='.75pt' style='position:absolute;top:3;right:400;width:20;height:16;cursor:hand' strokecolor='#4F789D' coordsize='21600,21600' title='删除当前选中记录'></v:roundrect>";
conTrolStr += "<v:line style='position:absolute;width:20;cursor:hand' from='7,11' to='14,11' strokecolor='red' strokeweight='2pt'/>";
conTrolStr += "</v:group>";
/////////增加//////////->[15]
//conTrolStr += "<v:group style='right:460;position:absolute;top:0px;height:16px;width:13;' coordsize='14,16'><v:roundrect arcsize='6554f' strokeweight='.75pt' style='position:absolute;top:3;right:400;width:20;height:14' strokecolor='#4F789D' coordsize='21600,21600' title='添加新记录'></v:roundrect><v:line style='position:absolute;width:20;' from='5,10' to='15,10' strokecolor='green' strokeweight='2pt'/><v:line style='position:absolute;width:20;' from='10,5' to='10,14' strokecolor='green' strokeweight='2.5pt'/></v:group>";
conTrolStr += "<v:group style='position:absolute;right:610;top:0px;height:16px;width:13;' coordsize='14,16'>";
conTrolStr += "<v:roundrect arcsize='6554f' strokeweight='.75pt' style='position:absolute;top:3;right:400;width:20;height:16;cursor:hand' strokecolor='#4F789D' coordsize='21600,21600' title='添加新记录'></v:roundrect>";
conTrolStr += "<v:textbox style='position:absolute;top:0;right:5;color:green;font-family:arial black;cursor:hand'>+</v:textbox>";
conTrolStr += "</v:group>";
/////////打印//////////->[16]
conTrolStr += "<v:group style='position:absolute;right:680;top:0px;height:16px;width:13;' coordsize='14,16'>";
conTrolStr += "<v:roundrect arcsize='6554f' strokeweight='.75pt' style='position:absolute;top:3;right:550;width:70;height:16;cursor:hand' strokecolor='#4F789D' coordsize='21600,21600' title='打印'></v:roundrect>";
conTrolStr += "<v:textbox style='position:absolute;top:4;right:8;color:#7B9EBD;font-family:arial black;font-size:7pt;cursor:hand;zIndex:0' title='导出数据'>导出数据</v:textbox>";
conTrolStr += "</v:group>";
conTrolStr += "<span style='position:absolute;right:410;color:#4F789D;top:5;'>(从:</span>";//标签:(从:->[17]
conTrolStr += "<span style='position:absolute;right:380;top:4;height:16;width:30;border:solid 0px red;color:#4F789D;text-align:center;font-size:10;font-family:arial;'/></span>";//记录段首记录索引->[18]
conTrolStr += "<span style='position:absolute;right:360;color:#4F789D;top:5;'> 到:</span>";//标签:(到:->[19]
conTrolStr += "<span style='position:absolute;right:330;top:4;height:16;width:30;border:solid 0px red;color:#4F789D;text-align:center;font-size:10;font-family:arial;'/></span>";//记录段尾记录索引->[20]
conTrolStr += "<span style='position:absolute;right:315;color:#4F789D;top:5;'> 条</span>";//标签:(条:->[21]
conTrolStr += "<span style='position:absolute;right:240;color:#4F789D;top:5;'>条/</span>";//标签:(条/->[22]
conTrolStr += "<span style='position:absolute;right:217;top:3;height:16;width:22;border:solid 0px red;color:#4F789D;text-align:center;font-size:10;font-family:arial;'/></span>";//总页数->[23]
conTrolStr += "<span style='position:absolute;right:203;color:#4F789D;top:5;'>页</span>";//标签:(页->[24]
//////////////////
conTrolStr += "</div>";
oControl.insertAdjacentHTML("afterBegin",conTrolStr);
oTemp = oControl.children(0);//div
oControl.curPage = oTemp.children(0);//当前页
oControl.curPage.onkeydown = gotoPage;//当输入页号后回车后转到相关页面
oControl.pageSize = oTemp.children(1);//每页显示记录数
oControl.recordCount = oTemp.children(7);//记录总数
oControl.firstPage = oTemp.children(10);//首页
oControl.previousPage = oTemp.children(11);//上一页
oControl.nextPage = oTemp.children(12);//下一页
oControl.lastPage = oTemp.children(13);//尾页
oControl.addR = oTemp.children(15);//增加r行
oControl.delR = oTemp.children(14);//删除r行
oControl.print = oTemp.children(16);//打印
oControl.curRow = oTemp.children(8);//当前行
oControl.curCol = oTemp.children(9);//当前列
oControl.curRowCaption = oTemp.children(2);//行标签
oControl.curColCaption = oTemp.children(3);//列标签
oControl.startRecordIndex = oTemp.children(18);//记录段首记录索引
oControl.endRecordIndex = oTemp.children(20);//记录段尾记录索引
oControl.pageCount = oTemp.children(23);//总页数
///////////////////
//////////////
oControl.curRowCaption.style.visibility = "hidden";
oControl.curColCaption.style.visibility = "hidden";
/////////////操作按钮///////////
if(hasAddButton == "false"){//是否显示增加按钮
oTemp.removeChild(oControl.addR);
}else{
oControl.addR.onclick = addRow;
}
if(hasDelButton == "false"){//是否显示删除按钮
oTemp.removeChild(oControl.delR);
}else{
oControl.delR.onclick = delRow;
}
if(hasPrintButton == "false"){//是否显示导出数据按钮
oTemp.removeChild(oControl.print);
}else{
oControl.print.onclick = PrintOut;
}
///////////////////////////////
oTemp.style.background = controllerBgColor;
oControl.recordCount.style.background = controllerBgColor;
oControl.curRow.style.background = controllerBgColor;
oControl.curCol.style.background = controllerBgColor;
//事件绑定
oControl.firstPage.onclick = moveFirstPage;
oControl.previousPage.onclick = movePreviousPage;
oControl.nextPage.onclick = moveNextPage;
oControl.lastPage.onclick = moveLastPage;
//页面加载时需要初始化的一些参数
oControl.curPage.value = 1;
oControl.pageSize.valu
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -