📄 flexgrid.htc
字号:
}
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 + -