📄 ig_webgrid_dom.js
字号:
{
this.Width=e.offsetWidth;
var gs=this.Band.Grid,gn=gs.Id;
if(gs.UseFixedHeaders && !this.getFixed())
{
var style=igtbl_getStyleSheet("DIV."+gn+"-cdf-"+this.Band.Index+"-"+this.Index);
if(style)
style.width=e.offsetWidth;
style=igtbl_getStyleSheet("DIV."+gn+"-hdf-"+this.Band.Index+"-"+this.Index);
if(style)
style.width=e.offsetWidth;
style=igtbl_getStyleSheet("DIV."+gn+"-fdf-"+this.Band.Index+"-"+this.Index);
if(style)
style.width=e.offsetWidth;
}
}
return this.Width;
},
"setWidth",
function(width)
{
var gs=this.Band.Grid,gn=gs.Id;
var colObj=igtbl_getElementById(this.Id);
var fac=this.Band.firstActiveCell;
var c1w=width;
if(c1w>0 && !igtbl_fireEvent(gn,gs.Events.BeforeColumnSizeChange,"(\""+gn+"\",\""+colObj.id+"\","+c1w+")"))
{
var fixed=(gs.UseFixedHeaders && !this.getFixed());
if(fixed)
{
var style=igtbl_getStyleSheet("DIV."+gs.Id+"-cdf-"+this.Band.Index+"-"+this.Index);
if(style)
style.width=c1w;
style=igtbl_getStyleSheet("DIV."+gs.Id+"-hdf-"+this.Band.Index+"-"+this.Index);
if(style)
style.width=c1w;
style=igtbl_getStyleSheet("DIV."+gn+"-fdf-"+this.Band.Index+"-"+this.Index);
if(style)
style.width=c1w;
}
var columns=igtbl_getDocumentElement(this.Id);
if(!columns.length)
columns=[columns];
for(var i=0;i<columns.length;i++)
{
var cg;
if(this.Band.Index==0 && !this.Band.IsGrouped && (gs.StationaryMargins==1 || gs.StationaryMargins==3))
cg=gs.Element.childNodes[0];
else
cg=columns[i].parentNode.parentNode.previousSibling;
var c;
if(cg)
c=cg.childNodes[columns[i].cellIndex];
else
c=columns[i];
if(c.width) c.width="";
if(columns[i].width) columns[i].width="";
c.style.width=c1w;
if(fixed)
{
var d=c.style.display;
c.style.display="none";
c.style.display=d;
}
}
if(gs.UseFixedHeaders)
{
var scrw=gs.scrElem.firstChild.offsetWidth+c1w-this.getWidth();
if(scrw>=0)
gs.scrElem.firstChild.style.width=scrw;
}
this.Width=c1w;
if(this.Band.Index==0)
{
if(gs.StatHeader)
gs.StatHeader.ScrollTo(gs.Element.parentNode.scrollLeft);
if(gs.StatFooter)
{
gs.StatFooter.Resize(colObj.cellIndex,c1w);
gs.StatFooter.ScrollTo(gs.Element.parentNode.scrollLeft);
}
}
gs.alignDivs(0,true);
gs.removeChange("ResizedColumns",this);
gs.recordChange("ResizedColumns",this,c1w);
igtbl_fireEvent(gn,gs.Events.AfterColumnSizeChange,"(\""+gn+"\",\""+colObj.id+"\","+c1w+")");
if(gs.NeedPostBack)
igtbl_doPostBack(gn);
return true;
}
return false;
},
"ensureWebCombo",
function()
{
if(typeof(igcmbo_getComboById)!="undefined" && igcmbo_getComboById(this.EditorControlID) && !this.WebComboId)
this.WebComboId=this.EditorControlID;
},
"getRealIndex",
function(row)
{
if(this.IsGroupBy)
return -1;
var ri=-1;
var colspan=1;
var cell=null;
if(row)
cell=row.Element.cells[row.Band.firstActiveCell];
var i=0;
while(i<this.Index+1 && (!this.Band.Columns[i].hasCells() || this.Node && this.Band.Columns[i].getHidden()))
i++;
if(i>this.Index)
return ri;
ri=0;
for(;i<this.Index;i++)
{
if(!this.Band.Columns[i].hasCells() || this.Node && this.Band.Columns[i].getHidden())
continue;
if(row)
{
if(colspan>1)
{
colspan--;
continue;
}
var cellSplit;
cellSplit=cell.id.split("_");
if(parseInt(cellSplit[cellSplit.length-1],10)>i)
ri--;
else
{
cell=cell.nextSibling;
if(cell)
colspan=cell.colSpan;
}
}
ri++;
}
return ri;
},
"getFixedHeaderIndicator",
function()
{
if(this.FixedHeaderIndicator!=0)
return this.FixedHeaderIndicator;
if(this.Band.FixedHeaderIndicator!=0)
return this.Band.FixedHeaderIndicator;
return this.Band.Grid.FixedHeaderIndicator;
},
"getValueFromString",
function(value)
{
if(value==null || typeof(value)=="undefined")
return null;
value=value.toString();
if(this.AllowNull && value==this.getNullText())
return null;
return igtbl_valueFromString(value,this.DataType);
}
];
for(var i=0;i<igtbl_ptsColumn.length;i+=2)
igtbl_Column.prototype[igtbl_ptsColumn[i]]=igtbl_ptsColumn[i+1];
/* Client events object */
igtbl_Events.prototype=new igtbl_WebObject();
igtbl_Events.prototype.constructor=igtbl_Events;
igtbl_Events.base=igtbl_WebObject.prototype;
function igtbl_Events(grid)
{
if(arguments.length>0)
this.init(grid);
}
var igtbl_ptsEvents=[
"init",
function(grid)
{
igtbl_Events.base.init.apply(this,["events",null,grid.Node?grid.Node.selectSingleNode("ClientSideEvents"):null]);
var defaultProps=new Array("AfterCellUpdate","AfterColumnMove","AfterColumnSizeChange","AfterEnterEditMode","AfterExitEditMode",
"AfterRowActivate","AfterRowCollapsed","AfterRowDeleted","AfterRowTemplateClose","AfterRowTemplateOpen",
"AfterRowExpanded","AfterRowInsert","AfterRowSizeChange","AfterSelectChange","AfterSortColumn",
"BeforeCellChange","BeforeCellUpdate","BeforeColumnMove","BeforeColumnSizeChange","BeforeEnterEditMode",
"BeforeExitEditMode","BeforeRowActivate","BeforeRowCollapsed","BeforeRowDeleted","BeforeRowTemplateClose",
"BeforeRowTemplateOpen","BeforeRowExpanded","BeforeRowInsert","BeforeRowSizeChange","BeforeSelectChange",
"BeforeSortColumn","ClickCellButton","CellChange","CellClick","ColumnDrag","ColumnHeaderClick","DblClick",
"EditKeyDown","EditKeyUp","InitializeLayout","InitializeRow","KeyDown","KeyUp","MouseDown","MouseOver",
"MouseOut","MouseUp","RowSelectorClick","TemplateUpdateCells","TemplateUpdateControls","ValueListSelChange",
// V20043a
"BeforeRowUpdate","AfterRowUpdate","XmlHTTPResponse");
var eventsArray;
try{eventsArray=eval("igtbl_"+grid.Id+"_Events");}catch(e){}
if(eventsArray)
for(var i=0;i<eventsArray.length;i++)
this[defaultProps[i]]=eventsArray[i];
igtbl_dispose(defaultProps);
}];
for(var i=0;i<igtbl_ptsEvents.length;i+=2)
igtbl_Events.prototype[igtbl_ptsEvents[i]]=igtbl_ptsEvents[i+1];
/* Rows collection object */
igtbl_Rows.prototype=new igtbl_WebObject();
igtbl_Rows.prototype.constructor=igtbl_Rows;
igtbl_Rows.base=igtbl_WebObject.prototype;
function igtbl_Rows(node,band,parentRow)
{
if(arguments.length>0)
{
var element=null;
if(band.Index==0 && !parentRow)
element=band.Grid.Element.tBodies[0];
else if(parentRow && parentRow.Element)
{
if(parentRow.GroupByRow)
{
var tb=parentRow.Element.childNodes[0].childNodes[0].tBodies[0];
if(tb.childNodes.length>1)
this.Element=tb.childNodes[1].childNodes[0].childNodes[0].tBodies[0];
}
else if(parentRow.Element.nextSibling && parentRow.Element.nextSibling.getAttribute("hiddenRow"))
this.Element=parentRow.Element.nextSibling.childNodes[parentRow.Band.firstActiveCell].childNodes[0].tBodies[0];
}
this.init(element,node,band,parentRow);
}
}
var igtbl_ptsRows=[
"init",
function(element,node,band,parentRow)
{
igtbl_Rows.base.init.apply(this,["rows",element,node]);
this.Grid=band.Grid;
this.Band=band;
this.ParentRow=parentRow;
this.rows=new Array();
this.length=0;
if(node)
{
this.SelectedNodes=node.selectNodes("Row");
if(!this.SelectedNodes.length)
this.SelectedNodes=node.selectNodes("Group");
this.length=this.SelectedNodes.length;
}
else
{
if(parentRow)
this.length=parentRow.ChildRowsCount;
else
{
this.length=this.Element.childNodes.length;
for(var i=0;i<this.Element.childNodes.length;i++)
if(this.Element.childNodes[i].getAttribute("hiddenRow"))
this.length--;
}
}
if(this.Element)
this.Element.Object=this;
this.lastRowId="";
},
"getRow",
function(rowNo,rowElement)
{
if(rowNo<0 || !this.Element || !this.Element.childNodes)
return null;
if(rowNo>=this.length)
{
if(this.length>this.rows.length)
this.rows[this.length-1]=null;
return null;
}
if(rowNo>=this.rows.length)
this.rows[this.length-1]=null;
if(!this.rows[rowNo])
{
var row=rowElement;
if(!row)
{
var cr=0;
if(this.Grid.Bands.length==1 && !this.Grid.Bands[0].IsGrouped)
row=this.Element.childNodes[rowNo];
else
for(var i=0;i<this.Element.childNodes.length;i++)
if(!this.Element.childNodes[i].getAttribute("hiddenRow"))
{
if(rowNo==cr)
{
row=this.Element.childNodes[i];
break;
}
cr++;
}
}
if(!row)
return null;
this.rows[rowNo]=new igtbl_Row(row,(this.Node?this.SelectedNodes[rowNo]:null),this,rowNo);
}
return this.rows[rowNo];
},
"getRowById",
function(rowId)
{
for(var i=0;i<this.length;i++)
{
var row=this.getRow(i);
if(row.Element.id==rowId)
return row;
}
return null;
},
"getColumn",
function(colNo)
{
var thead=this.Element.previousSibling;
if(!thead || thead.tagName!="THEAD")
return;
var j=-1;
for(var i=0;i<this.Band.Columns.length;i++)
{
if(this.Band.Columns[i].hasCells())
j++;
if(i==colNo)
break;
}
if(j<0 || j>=this.Band.Columns.length)
return null;
return thead.firstChild.cells[j+this.Band.firstActiveCell];
},
"indexOf",
function(row)
{
if(row.Node)
return parseInt(row.Node.getAttribute("i"),10);
if(this.Grid.Bands.length==1 && !this.Grid.Bands[0].IsGrouped)
return row.Element.sectionRowIndex;
var level=-1;
var rId=row.Element.id,rows=this.Element.rows;
for(var i=0;i<rows.length;i++)
{
var r=rows[i];
if(!r.getAttribute("hiddenRow"))
level++;
else
continue;
if(r.id==rId)
return level;
}
return -1;
},
"insert",
function(row,rowNo)
{
var row1=this.getRow(rowNo);
if(row1)
{
if(this.rows.splice)
this.rows.splice(rowNo,0,row);
else
this.rows=this.rows.slice(0,rowNo).concat(row,this.rows.slice(rowNo));
this.Element.insertBefore(row.Element,row1.Element);
if(row.Expandable && row.HiddenElement && !row.GroupByRow)
this.Element.insertBefore(row.HiddenElement,row1.Element);
if(this.Node)
this.Node.insertBefore(row.Node,row1.Node);
}
else
{
this.rows[this.rows.length]=row;
this.Element.appendChild(row.Element);
if(row.Expandable && row.HiddenElement && !row.GroupByRow)
this.Element.appendChild(row.HiddenElement);
if(this.Node)
this.Node.appendChild(row.Node);
}
this.length++;
},
"remove",
function(rowNo)
{
var row=this.getRow(rowNo);
if(!row)
return;
this.Element.removeChild(row.Element);
if(row.Expandable && row.HiddenElement && !row.GroupByRow)
this.Element.removeChild(row.HiddenElement);
if(row.Node)
row.Node.parentNode.removeChild(row.Node);
if(this.rows.splice)
this.rows.splice(rowNo,1);
else
this.rows=this.rows.slice(0,rowNo).concat(this.rows.slice(rowNo+1));
this.length--;
return row;
},
"sort",
function(sortedCols)
{
if(igtbl_clctnSort)
igtbl_clctnSort.apply(this,[sortedCols]);
},
"getFooterText",
function(columnKey)
{
var tFoot;
if(this.Band.Index==0 && this.Grid.StatFooter)
tFoot=this.Grid.StatFooter.Element;
else
tFoot=this.Element.nextSibling;
var col=this.Band.getColumnFromKey(columnKey);
if(tFoot && tFoot.tagName=="TFOOT" && col)
{
var fId=this.Grid.Id+"f_"+this.Band.Index+"_"+col.Index;
for(var i=0;i<tFoot.rows[0].childNodes.length;i++)
if(tFoot.rows[0].childNodes[i].id==fId)
return igtbl_getInnerText(tFoot.rows[0].childNodes[i]);
}
return "";
},
"setFooterText",
function(columnKey,value)
{
var tFoot;
if(this.Band.Index==0 && this.Grid.StatFooter)
tFoot=this.Grid.StatFooter.Element;
else
tFoot=this.Element.nextSibling;
var col=this.Band.getColumnFromKey(columnKey);
if(tFoot && tFoot.tagName=="TFOOT" && col)
{
var fId=this.Grid.Id+"f_"+this.Band.Index+"_"+col.Index;
for(var i=0;i<tFoot.rows[0].childNodes.length;i++)
if(tFoot.rows[0].childNodes[i].id==fId)
{
if(igtbl_trim(value)=="")
value=" ";
if(tFoot.rows[0].childNodes[i].childNodes.length>0 && tFoot.rows[0].childNodes[i].childNodes[0].tagName=="NOBR")
value="<nobr>"+value+"</nobr>";
tFoot.rows[0].childNodes[i].innerHTML=value;
break;
}
}
},
"render",
function()
{
var strTransform=this.applyXslToNode(this.Node);
if(strTransform)
{
this.Grid.innerObj.innerHTML=strTransform;
var tbl=this.Element.parentNode;
tbl.replaceChild(this.Grid.innerObj.firstChild.firstChild,this.Element);
this.Element=tbl.tBodies[0];
this.Element.Object=this;
for(var i=0;i<this.Band.Columns.length;i++)
if(this.Band.Columns[i].Selected && this.Band.Columns[i].hasCells())
{
var col=this.getColumn(i);
if(col)
igtbl_selColRI(this.Grid.Id,col,this.Band.Index,i);
}
}
},
"applyXslToNode",
function(node,rowToStart)
{
if(!node) return "";
if(typeof(rowToStart)=="undefined")
rowToStart=0;
var xslProc=this.Grid.XslProcessor;
var oldColumns=node.selectSingleNode("Columns");
if(oldColumns)
node.removeChild(oldColumns);
node.appendChild(this.Band.Columns.Node.cloneNode(true));
xslProc.input=node;
xslProc.addParameter("gridName",this.Grid.Id);
if(!this.SelectedNodes.length || this.SelectedNodes[0].nodeName!="Group")
{
var fac=this.Band.firstActiveCell;
xslProc.addParameter("fac",fac);
var rs=this.Band.getRowSelectors();
xslProc.addParameter("rs",rs);
if(fac>1 || rs==2 && fac==1)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -