📄 ig_webgrid_dom.js
字号:
/*
Infragistics UltraWebGrid Script
Version 5.1.20051.37
Copyright (c) 2001-2005 Infragistics, Inc. All Rights Reserved.
*/
var igtbl_reqType=new Object();
igtbl_reqType.None=0;
igtbl_reqType.ChildRows=1;
igtbl_reqType.MoreRows=2;
igtbl_reqType.Sort=3;
igtbl_reqType.UpdateCell=4;
igtbl_reqType.AddNewRow=5;
igtbl_reqType.DeleteRow=6;
igtbl_reqType.UpdateRow=7;
igtbl_reqType.Custom=8;
var igtbl_readyState=new Object();
igtbl_readyState.Ready=0;
igtbl_readyState.Loading=1;
var igtbl_error=new Object();
igtbl_error.Ok=0;
igtbl_error.LoadFailed=1;
/* General object. Where it all starts. */
function igtbl_Object(type)
{
if(arguments.length>0)
this.init(type);
}
igtbl_Object.prototype.init=function(type)
{
this.Type=type;
}
/* Web object. The one with an HTML element attached. */
igtbl_WebObject.prototype=new igtbl_Object();
igtbl_WebObject.prototype.constructor=igtbl_WebObject;
igtbl_WebObject.base=igtbl_Object.prototype;
function igtbl_WebObject(type,element,node)
{
if(arguments.length>0)
this.init(type,element,node);
}
igtbl_WebObject.prototype.init=function(type,element,node,viewState)
{
igtbl_WebObject.base.init.apply(this,[type]);
if(element)
{
this.Id=element.id;
this.Element=element;
}
if(node)
this.Node=node;
if(viewState)
this.ViewState=viewState;
}
igtbl_WebObject.prototype.get=function(name)
{
if(this.Node)
return this.Node.getAttribute(name);
if(this.Element)
return this.Element.getAttribute(name);
return null;
}
igtbl_WebObject.prototype.set=function(name,value)
{
if(this.Node)
this.Node.setAttribute(name,value);
else if(this.Element)
this.Element.setAttribute(name,value);
if(this.ViewState)
ig_ClientState.setPropertyValue(this.ViewState,name,value);
}
/* Grid object */
igtbl_Grid.prototype=new igtbl_WebObject();
igtbl_Grid.prototype.constructor=igtbl_Grid;
igtbl_Grid.base=igtbl_WebObject.prototype;
function igtbl_Grid(element,node)
{
if(arguments.length>0)
this.init(element,node);
}
var igtbl_ptsGrid=[
"init",
function(element,node)
{
igtbl_Grid.base.init.apply(this,["grid",element,node]);
if(node)
{
this.XmlNS="http://schemas.infragistics.com/WebGrid";
this.Xml=node;
this.Node=this.Xml.selectSingleNode("UltraWebGrid/Header/UltraGridLayout");
}
this.ViewState=ig_ClientState.addNode(ig_ClientState.createRootNode(),"UltraWebGrid");
this.ViewState=ig_ClientState.addNode(this.ViewState,"DisplayLayout");
this.StateChanges=ig_ClientState.addNode(this.ViewState,"StateChanges");
this.Id=this.Id.substr(2);
/* Initialize properties */
this.Changes=new Array();
this.SelectedRows=[];
this.SelectedColumns=[];
this.SelectedCells=[];
this.SelectedCellsRows=[];
this.ExpandedRows=[];
this.CollapsedRows=[];
this.ResizedColumns=[];
this.ResizedRows=[];
this.ChangedRows=[];
this.ChangedCells=[];
this.AddedRows=[];
this.DeletedRows=[];
/*** OBSOLETE ***/
this.ActiveCell="";
this.ActiveRow="";
this.grid=this;
this.activeRect=null;
this.SuspendUpdates=false;
/*** END OBSOLETE ***/
this.lastSelectedRow="";
this.ScrollPos=0;
this.currentTriImg=null;
this.newImg=null;
this.NeedPostBack=false;
this.CancelPostBack=false;
this.GridIsLoaded=false;
this.exitEditCancel=false;
this.noCellChange=false;
this.insideSetActive=false;
this.CaseSensitiveSort=false;
var defaultProps=new Array("AddNewBoxVisible","AddNewBoxView","AllowAddNew","AllowColSizing","AllowDelete","AllowSort",
"ItemClass","AltClass","AllowUpdate","CellClickAction","EditCellClass","Expandable","FooterClass",
"GroupByRowClass","GroupCount","HeaderClass","HeaderClickAction","Indentation","NullText",
"ExpAreaClass","RowLabelClass","SelGroupByRowClass","SelHeadClass","SelCellClass","RowSizing",
"SelectTypeCell","SelectTypeColumn","SelectTypeRow","ShowBandLabels","ViewType","AllowPaging",
"PageCount","CurrentPageIndex","PageSize","CollapseImage","ExpandImage","CurrentRowImage",
"CurrentEditRowImage","NewRowImage","BlankImage","SortAscImg","SortDscImg","Activation",
"cultureInfo","RowSelectors","UniqueID","StationaryMargins","LoadOnDemand","RowLabelBlankImage",
"EIRM","TabDirection","ClientID","DefaultCentury","UseFixedHeaders","FixedHeaderIndicator",
"FixedHeaderOnImage","FixedHeaderOffImage","FixedColumnScrollType","AllowRowNumbering","ClientSideRenumbering");
this.Bands=new Array();
var props;
try{props=eval("igtbl_"+this.Id+"_GridProps");}catch(e){}
if(props)
{
for(var i=0;i<defaultProps.length;i++)
this[defaultProps[i]]=props[i];
this.Activation=new igtbl_initActivation(this.Activation);
this.cultureInfo=this.cultureInfo.split("|");
}
if(this.UseFixedHeaders)
this.scrElem=this.Element.parentNode.previousSibling;
var xmlProps=eval("igtbl_"+this.Id+"_XmlGridProps");
this.AddnlProps=xmlProps;
this.RowsServerLength=xmlProps[0];
this.RowsRange=xmlProps[1];
this.RowsRetrieved=xmlProps[2];
if(!node)
{
var bandsArray=eval("igtbl_"+this.Id+"_Bands");
var bandCount=bandsArray.length;
for(var i=0;i<bandCount;i++)
this.Bands[i]=new igtbl_Band(this,null,i);
}
else
{
this.Bands.Node=this.Node.selectSingleNode("Bands");
var bandNodes=this.Bands.Node.selectNodes("Band");
for(var i=0;i<bandNodes.length;i++)
this.Bands[i]=new igtbl_Band(this,bandNodes[i],i);
}
igtbl_dispose(defaultProps);
igtbl_gridState[this.Id]=this;
if(!this.Bands[0].IsGrouped)
{
if(this.Bands[0].ColHeadersVisible!=2 && (this.StationaryMargins==1 || this.StationaryMargins==3))
this.StatHeader=new igtbl_initStatHeader(this);
if(this.Bands[0].ColFootersVisible==1 && (this.StationaryMargins==2 || this.StationaryMargins==3))
this.StatFooter=new igtbl_initStatFooter(this);
}
this.Events=new igtbl_Events(this);
this.Rows=new igtbl_Rows((this.Node?this.Xml.selectSingleNode("UltraWebGrid/Body/Rows"):null),this.Bands[0],null);
this.regExp=null;
this.backwardSearch=false;
this.lastSearchedCell=null;
this.lastSortedColumn="";
if(this.AllowRowNumbering==2)this.CurrentRowNumber=0;
this.GroupByBox=new igtbl_initGroupByBox(this);
this.DivElement=igtbl_getElementById(this.Id+"_div");
this.eReqType=igtbl_reqType;
this.eReadyState=igtbl_readyState;
this.eError=igtbl_error;
if(this.Node || !ig_csom.IsIE && this.LoadOnDemand==3)
{
this.ReqType=this.eReqType.None;
this.ReadyState=this.eReadyState.Ready;
this.Error=this.eError.Ok;
this.innerObj=document.createElement("div");
this.CallBack=xmlProps[12];
this.QueryString="";
if(ig_csom.IsIE)
{
this.Url=document.URLUnencoded;
this.Xslt=new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
this.Xslt.async=false;
this.Xslt.load(this.AddnlProps[11]);
if(!this.CallBack)
this.XmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
this.XmlResp=new ActiveXObject("Microsoft.XMLDOM");
this.XslTemplate=new ActiveXObject("Msxml2.XSLTemplate");
this.XslTemplate.stylesheet=this.Xslt;
this.XslProcessor=this.XslTemplate.createProcessor();
}
else
{
this.Url=document.URL;
this.Xslt=new XSLTProcessor();
this.XmlHttp=new XMLHttpRequest();
this.XmlResp=new DOMParser();
this.XmlHttp.open("GET",this.AddnlProps[11],false);
this.XmlHttp.send(null);
this.Xslt.importStylesheet(this.XmlResp.parseFromString(this.XmlHttp.responseText,"text/xml"));
}
if(node)
this.Rows.render();
}
this._calculateStationaryHeader();
var thisForm=this.Element.parentNode;
while(thisForm && thisForm.tagName!="FORM")
thisForm=thisForm.parentNode;
if(thisForm)
{
this.thisForm=thisForm;
if(thisForm.igtblGrid)
this.oldIgtblGrid=thisForm.igtblGrid;
else
{
if(thisForm.addEventListener)
thisForm.addEventListener('submit',igtbl_submit,false);
else if(thisForm.onsubmit!=igtbl_submit)
{
thisForm.oldOnSubmit=thisForm.onsubmit;
thisForm.onsubmit=igtbl_submit;
}
if(thisForm.submit!=igtbl_formSubmit)
{
thisForm.oldSubmit=thisForm.submit;
thisForm.submit=igtbl_formSubmit;
}
window.__doPostBackOld=window.__doPostBack;
window.__doPostBack=igtbl_submit;
window.__thisForm=thisForm;
}
thisForm.igtblGrid=this;
}
},
"sortColumn",
function(colId,shiftKey)
{
var bandNo=igtbl_bandNoFromColId(colId);
var band=this.Bands[bandNo];
var colNo=igtbl_colNoFromColId(colId);
if(band.Columns[colNo].SortIndicator==3)
return;
var headClk=igtbl_getHeaderClickAction(this.Id,bandNo,colNo);
if(headClk==2 || headClk==3)
{
var gs=igtbl_getGridById(this.Id);
if(!band.ClientSortEnabled)
gs.NeedPostBack=true;
var eventCanceled=igtbl_fireEvent(this.Id,this.Events.BeforeSortColumn,"(\""+this.Id+"\",\""+colId+"\")");
if(eventCanceled && band.ClientSortEnabled)
return;
if(!eventCanceled)
this.addSortColumn(colId,(headClk==2 || !shiftKey));
else
gs.NeedPostBack=false;
if(!eventCanceled && band.ClientSortEnabled)
{
var el=igtbl_getDocumentElement(colId);
if(!el.length && el.tagName!="TH")
igtbl_sortGroupedRows(this.Rows,bandNo,colId);
else
{
if(!el.length)
{
el=new Array();
el[0]=igtbl_getElementById(colId);
}
for(var i=0;i<el.length;i++)
{
var rows=el[i].parentNode;
while(rows && rows.tagName!="TABLE") rows=rows.parentNode;
if(rows && rows.tBodies[0]) rows=rows.tBodies[0];
if(!rows || !rows.Object) continue;
rows.Object.sort();
}
}
igtbl_hideEdit(this.Id);
igtbl_fireEvent(this.Id,this.Events.AfterSortColumn,"(\""+this.Id+"\",\""+colId+"\")");
}
}
},
"addSortColumn",
function(colId,clear)
{
var colAr=colId.split(";");
if(colAr.length>1)
{
for(var i=0;i<colAr.length;i++)
if(colAr[i]!="")
{
var band=this.Bands[igtbl_bandNoFromColId(colAr[i])];
band.SortedColumns[band.SortedColumns.length]=colAr[i];
}
}
else
{
var band=this.Bands[igtbl_bandNoFromColId(colId)];
var colNo=igtbl_colNoFromColId(colId);
if(band.Columns[colNo].SortIndicator==3)
return;
if(clear)
{
var scLen=band.SortedColumns.length;
for(var i=scLen-1;i>=0;i--)
{
var cn=igtbl_colNoFromColId(band.SortedColumns[i]);
if(cn!=colNo && band.Columns[cn].SortIndicator!=3 && !band.Columns[cn].IsGroupBy)
{
band.Columns[cn].SortIndicator=0;
if(band.ClientSortEnabled)
{
var colEl=igtbl_getDocumentElement(band.SortedColumns[i]);
if(!colEl.length)
colEl=[colEl];
for(var j=0;j<colEl.length;j++)
{
var img=null;
var el=colEl[j];
if(this.UseFixedHeaders && !band.Columns[cn].getFixed() && band.Columns[cn].hasCells())
el=el.firstChild.firstChild;
if(el.firstChild && el.firstChild.tagName=="NOBR")
el=el.firstChild;
if(el.childNodes.length && el.childNodes[el.childNodes.length-1].tagName=="IMG" && el.childNodes[el.childNodes.length-1].getAttribute("imgType")=="sort")
img=el.childNodes[el.childNodes.length-1];
if(img)
el.removeChild(img);
}
}
}
if(band.Columns[cn].IsGroupBy)
break;
band.SortedColumns=band.SortedColumns.slice(0,-1);
this.removeChange("SortedColumns",band.Columns[cn]);
}
}
if(band.Columns[colNo].SortIndicator==1)
band.Columns[colNo].SortIndicator=2;
else
band.Columns[colNo].SortIndicator=1;
this.recordChange("SortedColumns",band.Columns[colNo],clear.toString()+":"+band.Columns[colNo].SortIndicator);
band.Grid.lastSortedColumn=colId;
if(band.ClientSortEnabled)
{
var colEl=igtbl_getDocumentElement(colId);
if(!colEl.length)
colEl=[colEl];
for(var i=0;i<colEl.length;i++)
{
var img=null;
var el=colEl[i];
if(this.UseFixedHeaders && !band.Columns[colNo].getFixed() && band.Columns[colNo].hasCells())
el=el.firstChild.firstChild;
if(el.firstChild && el.firstChild.tagName=="NOBR")
el=el.firstChild;
if(el.childNodes.length && el.childNodes[el.childNodes.length-1].tagName=="IMG" && el.childNodes[el.childNodes.length-1].getAttribute("imgType")=="sort")
img=el.childNodes[el.childNodes.length-1];
else
{
img=document.createElement("img");
img.border="0";
img.setAttribute("imgType","sort");
el.appendChild(img);
}
if(band.Columns[colNo].SortIndicator==1)
img.src=this.SortAscImg;
else
img.src=this.SortDscImg;
}
}
if(!band.Columns[colNo].IsGroupBy)
{
for(var i=0;i<band.SortedColumns.length;i++)
if(band.SortedColumns[i]==colId)
break;
if(i==band.SortedColumns.length)
{
band.Columns[colNo].ensureWebCombo();
band.SortedColumns[band.SortedColumns.length]=colId;
}
}
}
},
"getActiveCell",
function()
{
return this.oActiveCell;
},
"setActiveCell",
function(cell,force)
{
if(!this.Activation.AllowActivation || this.insideSetActive)
return;
if(!cell || !cell.Element || cell.Element.tagName!="TD")
cell=null;
if(!force && (cell && this.oActiveCell==cell || this.exitEditCancel))
{
this.noCellChange=true;
return;
}
if(!cell)
{
this.ActiveCell="";
this.ActiveRow="";
var row=null;
if(this.oActiveCell)
row=this.oActiveCell.Row;
else if(this.oActiveRow)
row=this.oActiveRow;
if(row)
row.setSelectedRowImg(true);
if(this.oActiveCell)
this.oActiveCell.renderActive(false);
if(this.oActiveRow)
this.oActiveRow.renderActive(false);
this.oActiveCell=null;
this.oActiveRow=null;
if(this.AddNewBoxVisible)
this.updateAddNewBox();
return;
}
var change=true;
var oldACell=this.oActiveCell;
var oldARow=this.oActiveRow;
if(!oldARow && oldACell)
oldARow=oldACell.Row;
this.endEdit();
if(this.exitEditCancel || this.fireEvent(this.Events.BeforeCellChange,[this.Id,cell.Element.id])==true)
change=false;
if(change && cell.Row!=oldARow)
{
if(oldARow)
oldARow.processUpdateRow();
if(this.exitEditCancel || this.fireEvent(this.Events.BeforeRowActivate,[this.Id,cell.Row.Element.id])==true)
change=false;
}
if(!change)
{
this.noCellChange=true;
return;
}
this.noCellChange=false;
if(this.oActiveCell)
this.oActiveCell.renderActive(false);
if(this.oActiveRow)
this.oActiveRow.renderActive(false);
this.oActiveCell=cell;
this.ActiveCell=cell.Element.id;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -