📄 dbgrid.htc
字号:
<!--///////////////////////////////////////////////////////////////////////
// 标题:DBGrid组件 ///////////////////////////////////////////////////
// 时间:2004-01-10 ///////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////-->
<public:component name="DBGrid" urn="DBGrid" lightweight=true>
<public:property name="titleXML" get="getTitleXML" put="putTitleXML"/>//DBGrid标题数据源
<public:property name="dataXML" get="getDataXML" put="putDataXML"/>//DBGrid数据源
//grid组件整体位置、样式
<public:property name="top" value="10" put="putTop"/>
<public:property name="left" value="10" put="putLeft"/>
<public:property name="width" value="200" put="putWidth"/>
<public:property name="height" value="250" put="putHeight"/>
<public:property name="borderColor" value="#A6C4E1"/>
//标题行样式/
<public:property name="hasTitle" value="true"/> // 是否有表头
<public:property name="titleBgColor" value="#CAEAFF"/>
<public:property name="titleForeColor" value="#000000"/>
//数据表样式
<public:property name="dataBgColor" value="#DBDBDB"/>//数据表背景色
<public:property name="oddTRColor" value="#F3F8FC"/> //数据表奇数行背景色
<public:property name="evenTRColor" value="#E9F0F8"/> //数据表偶数行背景色
<public:property name="selectionMode" value="cell" put="putSelectionMode"/>
<public:property name="tableRow" get="getTableRow" put="putTableRow"/>//当前行
<public:property name="tableCol" get="getTableCol" put="putTableCol"/>//当前列
<public:property name="selectBgColor" value="#DFF0CE"/> //选择的cell或行的背景色
<public:property name="selectForeColor" value="#FF6600"/> //选择的cell或行的前景色
<public:property name="rows" get="getRows"/>//总行数
<public:property name="cols" get="getCols"/>//总列数
<public:property name="PKColName" put="putPKColName"/>//每行的唯一标识列的列名
//索引列样式
<public:property name="hasFixedCol" value="1"/>//是否有索引列:0:无 1:有
<public:property name="fixedColForeColor" value="#000000"/>//索引列cell前景色
<public:property name="fixedColBGColor" value="#CAEAFF"/>//索引列cell背景色
<public:property name="fixedColAlign" value="center"/>//索引列cell对齐方式
<public:property name="editMode" value="true"/>//是否可以编辑
//是否有控制面板
<public:property name="hasController" value="true"/>//是否有控制面板
<public:property name="controllerBgColor" value="#CAEAFF"/>//控制器背景色
<public:property name="pageSize" put="putPageSize"/>//一页记录数
<public:property name="curPage" get="getCurPage"/>//
<public:property name="recordCount" get="getRecordCount"/>//记录总数
<public:property name="hasAddButton" value="false"/>//是否有增加行按钮
<public:property name="hasDelButton" value="false"/>//是否有删除行按钮
<public:property name="hasPrintButton" value="true"/>//是否有打印按钮
<public:property name="hasPageFooter" value="false"/>//是否含有页脚行
<public:property name="hasTotalLine" put="putHasTotalLine"/>//是否含有合计行
<public:property name="ifAlertNodataFill" put="putIfAlertNodataFill"/>//是否在无数据的时候进行提示 默认为提示
//checkBox列和radio列
<public:property name="hasCheckBox" put="putCheckBox"/>//checkBox列
<public:property name="hasRadio" value="false"/>//radio列
<public:property name="readOnly" put="putReadOnly" get="getReadOnly"/>//readOnly属性
<public:property name="init" put="initialize"/>//组件初始化
<public:event name="onDrag" id="evtOnDrag"/>
<public:event name="onClickCell" id="evtClickCell"/>
<public:event name="onChange" id="evtonChange"/>
<public:event name="onModify" id="evtonModify"/>
<public:method name="getCellText"/> //获得指定cell的内容
<public:method name="getSelectedXMLRow"/> //返回当前
<public:method name="getSelectedOrderXMLRow"/>
<public:method name="getPaginationData"/>
<public:method name="getValueByRPropName"/>//根据RPropName来获得指定行的列值
<public:method name="delRow"/> //删除选定的行
<public:method name="delCheckRow"/> //删除通过checkBox选中的行
<public:method name="addRow"/>//添加新行
<public:method name="PrintOut"/>//打印
<public:method name="updateSelectRow"/>//用来修改选中行的内容
<public:method name="getXMLDocCopy"/>//返回当前正在编辑的xml的拷贝 原saveXML
<public:method name="getXMLFrgWithRoot"/>//返回一般需要使用的xml结果对象 原saveXML2
<public:method name="getXMLStringNoRoot"/>//返回一般需要使用的xml结果对象,无root节点 原saveXML3
<public:method name="setReportformTitle"/>
<public:method name="setReportformProducer"/>
<public:method name="setReportformDatetime"/>
<public:method name="getReportFormsPrintInfo"/>
<public:attach event="onclick" for="element" onevent="hideInput()"/>
<script language="JavaScript">
<!--
var oDataXML = null;//Table数据的XML对象
var objDeletedXMLFragement = null;//用来保存已经删除了的行
var oCopyDataXML = null;//Table数据的XML对象的拷贝
var oPreviousRowXMLData = null;//双击时用来保存当前行XML数据对象
var oTitleXML = null;//Title数据的XML对象
var oControl = null;//控制面板容器对象
var oDivPageFooter = null;
var oTabPageFooter = null;
var oTitle = null;//标题对象
var oTitleTable = null;//标题table对象
var oTitleTR = null;//标题行tr对象
var oTitleTD = null;//标题cell对象
var oTitleInnerDiv = null;//标题行 cell 中的 div 对象,用来撑开td
var objTA,objDT,objSEC,objCombo,objActiveEditor,objMaskEdit,objDatePicker,objQInput; //编辑组件以及记录当前活动的Editor
var oTBody = null;//内容所在容器对象
var oDataTable = null;//oTBody容器对象
var oTBodyTable = null;//内容table对象
var oTBodyTR = null;//内容tr对象
var oTBodyTD = null;//内容cell对象
var oFirstLineDiv = null;//第一行cell中的div对象,用来控制整个内容表的列宽
var vTableCol,vTableRow;//存储当前操作的cell
var vPreviousCol,vPreviousRow,vPreviousRowForXML;//存储上次操作的cell位置
var vSelectionMode = "row";//选中方式(默认为单元格选中)
var vPKColName = "";//用来唯一标识每一行的XML属性名
var allowResizeModle = true;//是否可以调整列宽
var vMouseStart,objSplitBar; //鼠标初始位置,当前活动splitbar
var bIsSelected = false;//单元格是否被选中
var objScrollTrack; //记录鼠标跟随选择的TD对象
var oSortBtn = null;//排序按钮
var curScrollLeftStatus = 0;//水平滚动条当前的scrollLeft
var curScrollTopStatus = 0;//垂直滚动条当前的scrollTop
var oEditor;//当前输入框
var oCurCell;//当前Cell
var curContent;//当前cell中的内容
var curPage = 1;//当前页
var oPageSize = 20;//每页显示的记录数,默认为20条
var arrCheckedRow = new Array();//用来保存用户通过checkBox选择行的__rowid
var intRows = 0;
var addFlag = false;
var vReadOnly = false;
var vTop = 10;
var vLeft = 10;
var vWidth = 200;
var vHeight = 250;
var boolInEditing = false;
//////checkBox hzh 2005-7-14 add////
var objSelectedRowXMLFragement = null;
var booleanHasCheckBox = false;
var intFirstColIndex = 1;//
/////////////////////////////
/////////////////报表打印信息设置//////////////////////
var vReportformProducer = "+++++++++ hzh ++++++++";
var vReportformDatetime = "+++++++++ 2005年3月3日 15:30 ++++++++";
var vReportTitleTableInnerHTML = "";//报表表头数据
var vReportDataTableInnerHTML = "";//报表主体数据
var intColCount = 0;//总列数
/////////////////////////////////////////////
var intRecordCount = 0;//记录总数
var intCursor = 1;//游标值
var recordLimit = 100;//每次返回记录的条数
var intCurLeftPosition = 1;//当前记录段首记录
var intCurRightPosition = recordLimit;//当前记录段尾记录
var booleanShowDataInOnePage = false;
var booleanPageControl = false;
var booleanHasTotalLine = false;//是否有合计行 - 默认:无
var booleanIfAlertNodataFill = true;
var tmpPageNumber = 0;
var oraclDateValue = "";
function putHasTotalLine(argHasTotalLine){
booleanHasTotalLine = ( argHasTotalLine == "yes" ) ? true : false;
}
function putIfAlertNodataFill(argIfAlertNodataFill){
booleanIfAlertNodataFill = ( argIfAlertNodataFill == "yes" ) ? true : false;
}
function getCurPage(){
return "";
}
function getRecordCount(){//记录总数
return intRecordCount;
}
///////////////////////////////////////////////////
/////////以下方法为北京PHMS项目重写或新增//////////////////
//////////////////////////////////////////////////////
////////////报表设计////////////////////////////
function setReportformTitle(argReportformTitle){
//
}
function setReportformProducer(argReportformProducer){
vReportformProducer = argReportformProducer;
}
function setReportformDatetime(argReportformDatetime){
vReportformDatetime = argReportformDatetime;
}
function getReportFormsPrintInfo(){//返回要打印的报表信息
var vReportBottomTableInnerHTML = "<table vhinfo='bottom' width='" + vWidth + "'><tr><td colSpan='" + intColCount + "'>" + vReportformProducer + "</td><td>" + vReportformDatetime + "</td></tr></table>";
var vReportformTransformXSLT = ( hasFixedCol == 1 ) ? '<?xml version="1.0" encoding="gbk"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method="xml" version="1.0" encoding="gbk" indent="yes"/><xsl:template match="/"><table vhinfo="thead"><tr><td></td><xsl:apply-templates select="root"/><td></td></tr></table></xsl:template><xsl:template match="root"><xsl:for-each select="Col[not(@visible = \'false\')]"><td rpropname="{@rpropname}" dataType="{@DataType}" align="center"><xsl:value-of select="@caption"/></td></xsl:for-each></xsl:template></xsl:stylesheet>' : '<?xml version="1.0" encoding="gbk"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method="xml" version="1.0" encoding="gbk" indent="yes"/><xsl:template match="/"><table vhinfo="thead"><tr><xsl:apply-templates select="root"/><td></td></tr></table></xsl:template><xsl:template match="root"><xsl:for-each select="Col[not(@visible = \'false\')]"><td rpropname="{@rpropname}" dataType="{@DataType}" align="center"><xsl:value-of select="@caption"/></td></xsl:for-each></xsl:template></xsl:stylesheet>';
vReportTitleTableInnerHTML = __objGlobalCommonInst.transformXML(oTitleXML,vReportformTransformXSLT);
//window.prompt("", "<?xml version='1.0' encoding='gbk'?><root><table vhinfo='maintab'><tr><td><table vhinfo='body'><tr><td>" + vReportTitleTableInnerHTML + "</td></tr><tr><td>" + vReportDataTableInnerHTML + "</td></tr></table></td></tr><tr><td>" + vReportBottomTableInnerHTML + "</td></tr></table></root>");
//return "<?xml version='1.0' encoding='gbk'?><root><table vhinfo='maintab'><tr><td><table vhinfo='body'><tr><td>" + vReportTitleTableInnerHTML + "</td></tr><tr><td>" + vReportDataTableInnerHTML + "</td></tr></table></td></tr><tr><td>" + vReportBottomTableInnerHTML + "</td></tr></table></root>";
post("<?xml version='1.0' encoding='gbk'?><root><table vhinfo='maintab'><tr><td><table vhinfo='body'><tr><td>" + vReportTitleTableInnerHTML + "</td></tr><tr><td>" + vReportDataTableInnerHTML + "</td></tr></table></td></tr><tr><td>" + vReportBottomTableInnerHTML + "</td></tr></table></root>");
}
function post(argReportformPrintInfo){
var objMsgBody = __objGlobalCommonInst.createMsgBody();
objMsgBody.inUseState = "busy";
objMsgBody.addParameter("CONTENT", argReportformPrintInfo);
objMsgBody.addParameter("EXTENSION", ".xls");
var x = getRootNode(postXML(objMsgBody, __objGlobalCommonInst, "01010101", false));
var url = __objGlobalCommonInst.webrootURL;
if(url.charAt(url.length-1) != "/") {
url += "/";
}
url += "temp/" + x.selectSingleNode("r").getAttribute("URI");
window.open(url);
}
////////////////////////////////////////
function updateSelectRow(argR){//对选中行的显示内容进行修改
//argR的格式:<r ISID='22222' WOBD='100' HSBD='50' BZCH='40' USBD='30' SUBCD='0000000'/>
//其中属性名为每列对应的rpropname
if(typeof(argR) == "undefined") return;
if(vTableRow == -1) return;
var objRXML = __objGlobalCommonInst.inputXML(argR);
if(!objRXML) return;
var vLengthAttribute = objRXML.childNodes[0].attributes.length;
var vLengthTitleCell = oTitleTable.rows[0].cells.length;
for(var i = 1; i < vLengthTitleCell; i ++){
for(var j = 0; j < vLengthAttribute; j ++){
if(objRXML.childNodes[0].attributes[j].name == oTitleTable.rows[0].cells[i].firstChild.rpropname){
if(vTableRow == 0){
oTBodyTable.rows[0].cells[i].firstChild.innerText = objRXML.childNodes[0].attributes[j].value;
}else{
oTBodyTable.rows[vTableRow].cells[i].innerText = objRXML.childNodes[0].attributes[j].value;
}
break;
}
}
}
}
function delRow(){//删除用户选中的当前行
if(vTableRow == -1) return;
var intCurRowIndex = parseInt(vTableRow);
var strXPath = "//r[position() = " + (intCurRowIndex + 1) + " ]";
var objCurRow = oCopyDataXML.selectSingleNode(strXPath);
oCopyDataXML.childNodes[0].removeChild(objCurRow);
if(intCurRowIndex == 0){//选中了第一行
if(oTBodyTable.rows.length == 1){//仅有一行
oTBodyTable.rows[0].parentElement.removeChild(oTBodyTable.rows[0]);
}else{//
for(var i = 1; i < oTBodyTable.rows[1].cells.length; i ++){
oTBodyTable.rows[0].cells[i].firstChild.innerText = oTBodyTable.rows[1].cells[i].innerText;
}
oTBodyTable.rows[1].parentElement.removeChild(oTBodyTable.rows[1]);
}
}else{//选中的不是第一行
for(var i = 0;i < oTBodyTable.rows.length;i ++){
if(oTBodyTable.rows[i].rowIndex == intCurRowIndex){
oTBodyTable.rows[i].parentElement.removeChild(oTBodyTable.rows[i]);
break;
}
}
}
if(oTBodyTable.rows.length && hasFixedCol == "1"){//更新索引列
for(var i = 0; i < oTBodyTable.rows.length; i ++){
oTBodyTable.rows[i].cells[0].innerText = i + 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -