javascript之dhDataGrid Ver2.0.0代码
javascript之dhDataGrid Ver2.0.0代码
发布时间:2016-12-30 来源:查字典编辑
摘要:针对dhDataGrid的前一版本Ver1.0.0而做的更新!1、标题栏、左边边栏固定方式更新,取消expression方式;2、排序方式更...

针对dhDataGrid的前一版本Ver1.0.0而做的更新!

1、标题栏、左边边栏固定方式更新,取消expression方式;

2、排序方式更新,同时支持数字、字符、日期、数字字符混合、中文汉字的排序;

3、支持换肤,您可以自己定制该控件样式;

4、预留[双击]、[右键]功能;

5、支持IE、FF;

CSS:

/*dhdatagrid大块样式*/

#dhdatagrid{position:relative;width:500px;height:200px;background:white;margin:0px;padding:0px;overflow:hidden;border:1pxinset;-moz-user-select:none;}

/*dhdatagrid表格全局样式*/

#dhdatagridtable{table-layout:fixed;margin:0px;}

#dhdatagridtabletd{height:18px;cursor:default;font-size:12px;font-family:verdana;overflow:hidden;white-space:nowrap;text-indent:2px;border-right:1pxsolidbuttonface;border-bottom:1pxsolidbuttonface;}

#dhdatagridtabletd.arrow{font-size:8px;color:#808080;}

#dhdatagridtable.lastdata{border-right:none;}

#dhdatagridtable.column{width:120px;cursor:default;background:buttonface;border-top:1pxsolid#fff;border-right:1pxsolid#404040;border-bottom:1pxsolid#404040;border-left:1pxsolid#fff;}

#dhdatagridtable.over{width:120px;cursor:default;background:buttonface;border-top:1pxsolid#fff;border-right:1pxsolid#404040;border-bottom:1pxsolid#404040;border-left:1pxsolid#fff;}

#dhdatagridtable.sortdown{width:120px;cursor:default;background:buttonface;border-right:1pxsolid#ffffff;border-bottom:1pxsolid#ffffff;border-left:1pxsolid#404040;border-top:1pxsolid#404040;position:relative;left:1px;}

#dhdatagridtable.dataover{background:#FAFAFA;}

#dhdatagridtable.firstcolumn{width:30px;text-indent:0px;text-align:center;background:buttonface;border-top:1pxsolid#fff;border-right:1pxsolid#404040;border-bottom:1pxsolid#404040;border-left:1pxsolid#fff;}

#dhdatagridtable.lastcolumn{background:buttonface;border-top:1pxsolid#fff;border-right:1pxsolid#404040;border-bottom:1pxsolid#404040;border-left:1pxsolid#fff;}

/*dhdatagrid选定行样式*/

#dhdatagridtable.selectedrow{background:highlight;color:white;}

/*dhdatagrid表头样式*/

#dhdatagrid#titlecolumn{width:100%;position:absolute;top:0px;left:0px;z-index:3;}

/*dhdatagrid左边栏样式*/

#dhdatagrid#slidecolumn{width:30px;position:absolute;top:0px;left:0px;z-index:2;}

#dhdatagrid#slidecolumntd{width:30px;text-indent:0px;text-align:center;background:buttonface;border-top:1pxsolid#fff;border-right:1pxsolid#404040;border-bottom:1pxsolid#404040;border-left:1pxsolid#fff;}

/*dhdatagrid内容表体样式*/

#dhdatagrid#datacolumn{width:100%;position:absolute;top:0px;left:0px;}

/*dhdatagrid原点样式*/

#dhdatagrid#zero{width:30px;height:18px;margin:0px;padding:0px;position:absolute;top:0px;left:0px;z-index:10;background:buttonface;border-top:1pxsolid#fff;border-right:1pxsolid#404040;border-bottom:1pxsolid#404040;border-left:1pxsolid#fff;text-align:center;font-size:10px;color:#A19F92;}

JS:

functiondhdatagrid(){

//author:dh20156;

this.callname="dhdg";

this.width=500;

this.height=200;

this.rid="dhdatagrid";

this.columns=[];

this.data=[];

this.dblclick_fun=function(){}

this.contextmenu_fun=function(){}

this.parentNode=document.body;

vardh=this;

varframediv=null;

varzerobj=null;

varleftobj=null;

vartitleobj=null;

vardataobj=null;

varhbar=null;

varvbar=null;

varbgbar=null;

//改变列宽初始位置

varml=0;

//改变列宽对象初始宽度

varow=0;

//改变列宽对象

vartdobj=null;

//当前选定行索引

varnowrow=null;

//是否更改垂直滚动条位置

varchangeposv=true;

this.init=function(){

//initthedata初始数据

vardgc="";

if(this.columns.length>0){

dgc="<tr><tdclass="firstcolumn"></td>";

for(varcc=0;cc<this.columns.length;cc++){

dgc+="<tdclass="column"onmouseover=""+this.callname+".over(this);"onmouseout=""+this.callname+".out(this);"onmousemove=""+this.callname+".cc(event,this);"onmousedown=""+this.callname+".rsc_d(event,this);"onmouseup=""+this.callname+".mouseup(this);">"+this.columns[cc]+"<spanclass="arrow"></span></td>";

}

dgc+="<tdclass="lastcolumn"></td></tr>";

}

vardgs="";

vardgd="";

if(this.data.length>0){

//第一列

dgs="<tr><td></td></tr>";

for(varr=0;r<this.data.length;r++){

dgs+="<tr><td>"+(r+1)+"</td></tr>";

dgd+="<tronmouseover=""+this.callname+".dataover(this);"onmouseout=""+this.callname+".dataout(this);"><tdclass="firstcolumn"></td>";

for(varc=0;c<this.data[r].length;c++){

dgd+="<tdondblclick=""+this.callname+".dblclick_fun(this);"oncontextmenu=""+this.callname+".contextmenu_fun(this);">"+this.data[r][c]+"</td>";

}

dgd+="<tdclass="lastdata"></td></tr>";

}

if(dgc==""){

dgc="<tr><tdclass="firstcolumn"></td>";

for(vardc=0;dc<this.data[0].length;dc++){

dgc+="<tdclass="column"onmouseover=""+this.callname+".over(this);"onmouseout=""+this.callname+".out(this);"onmousemove=""+this.callname+".cc(event,this);"onmousedown=""+this.callname+".rsc_d(event,this);"onmouseup=""+this.callname+".mouseup(this);">Expr"+(dc+1)+"<spanclass="arrow"></span></td>";

}

dgc+="<tdclass="lastcolumn"></td></tr>";

}

}

//dhdatagridframe框架

vardgframe=document.createElement("DIV");

dgframe.id=this.rid;

dgframe.onmousedown=function(e){e=e||window.event;getrow(e);}

dgframe.onmousemove=function(e){e=e||window.event;rsc_m(e);}

if(document.attachEvent){

document.attachEvent("onmouseup",rsc_u);

}else{

document.addEventListener("mouseup",rsc_u,false);

}

dgframe.oncontextmenu=function(){returnfalse}

dgframe.onselectstart=function(){returnfalse}

ae(dgframe);

//dhdatagridzeropoint零点

vardgzero="<divid="zero"></div>"

//dhdatagridslidecolumn第一列

vardgslide="<tablecellpadding="0"cellspacing="0"id="slidecolumn">"+dgs+"</table>";

//dhdatagridcolumn标题栏

vardgcolumn="<tablecellpadding="0"cellspacing="0"id="titlecolumn">"+dgc+"</table>";

//dhdatagriddata数据

vardgdata="<tablecellpadding="0"cellspacing="0"id="datacolumn">"+dgc+dgd+"</table>";

//dhdatagridhbar水平滚动条

vardghbar=document.createElement("DIV");

dghbar.id="hbar";

dghbar.style.position="absolute";

dghbar.style.width="100%";

dghbar.style.height="17px";

dghbar.style.top=this.height-17;

dghbar.style.overflowX="auto";

dghbar.style.zIndex="10";

dghbar.onscroll=function(){scrh();}

dghbar.innerHTML="<divstyle="width:100%;height:1px;overflow-y:hidden;"></div>";

//dhdatagridvbar垂直滚动条

vardgvbar=document.createElement("DIV");

dgvbar.id="vbar";

dgvbar.style.position="absolute";

dgvbar.style.width="17px";

dgvbar.style.height="100%";

dgvbar.style.left=this.width-17;

dgvbar.style.overflowY="auto";

dgvbar.style.zIndex="10";

dgvbar.onscroll=function(){scrv();}

dgvbar.innerHTML="<divstyle="width:1px;height:100%;overflow-x:hidden;"></div>";

//dhdatagridbgbar滚动条背景

vardgbgbar=document.createElement("DIV");

dgbgbar.id="bgbar";

dgbgbar.style.background="buttonface";

dgbgbar.style.position="absolute";

dgbgbar.style.width="100%";

dgbgbar.style.height="17px";

dgbgbar.style.top=this.height-17;

dgbgbar.style.overflowX="auto";

dgbgbar.style.zIndex="9";

dgbgbar.style.display="none";

dgbgbar.innerHTML="";

//appendChild

dgframe.innerHTML=dgzero+dgslide+dgcolumn+dgdata;

dgframe.appendChild(dghbar);

dgframe.appendChild(dgvbar);

dgframe.appendChild(dgbgbar);

this.parentNode.appendChild(dgframe);

if(document.attachEvent){

document.attachEvent("onkeydown",updown);

}else{

document.addEventListener("keydown",updown,false);

}

framediv=dgframe;

zerobj=document.getElementById("zero");

leftobj=document.getElementById("slidecolumn");

titleobj=document.getElementById("titlecolumn");

dataobj=document.getElementById("datacolumn");

hbar=dghbar;

vbar=dgvbar;

bgbar=dgbgbar;

varbtt=getCurrentStyle(framediv,"borderTopWidth");

varbtr=getCurrentStyle(framediv,"borderRightWidth");

varbtb=getCurrentStyle(framediv,"borderBottomWidth");

varbtl=getCurrentStyle(framediv,"borderLeftWidth");

varfh=getCurrentStyle(framediv,"height");

varzh=getCurrentStyle(zerobj,"height");

varzbt=getCurrentStyle(zerobj,"borderTopWidth");

varzbb=getCurrentStyle(zerobj,"borderBottomWidth");

if(document.all){

vbar.style.left=parseInt(vbar.style.left)-parseInt(btr)-parseInt(btl);

}else{

framediv.style.height=parseInt(fh)-parseInt(btb)-parseInt(btt);

zerobj.style.height=parseInt(zh)-parseInt(zbb)-parseInt(zbt);

}

hbar.style.top=parseInt(hbar.style.top)-parseInt(btb)-parseInt(btt);

bgbar.style.top=parseInt(bgbar.style.top)-parseInt(btb)-parseInt(btt);

}

functiongetCurrentStyle(oElement,sProperty){

if(oElement.currentStyle){

returnoElement.currentStyle[sProperty];

}elseif(window.getComputedStyle){

sProperty=sProperty.replace(/([A-Z])/g,"-$1").toLowerCase();

returnwindow.getComputedStyle(oElement,null).getPropertyValue(sProperty);

}else{

returnnull;

}

}

//设置块滚动条

this.setwh=function(){

hbar.style.display="block";

vbar.style.display="block";

hbar.childNodes[0].style.width=dataobj.offsetWidth;

vbar.childNodes[0].style.height=dataobj.offsetHeight;

if(hbar.childNodes[0].offsetWidth<=hbar.offsetWidth){

hbar.style.display="none";

}else{

hbar.style.display="block";

}

if(vbar.childNodes[0].offsetHeight<=vbar.offsetHeight){

vbar.style.display="none";

}else{

vbar.style.display="block";

}

if(hbar.childNodes[0].offsetWidth>hbar.offsetWidth&&vbar.childNodes[0].offsetHeight>vbar.offsetHeight&&changeposv){

bgbar.style.display="block";

hbar.style.width=hbar.offsetWidth-17;

vbar.style.height=vbar.offsetHeight-17;

vbar.childNodes[0].style.height=vbar.childNodes[0].offsetHeight+17;

changeposv=false;

}

if(hbar.childNodes[0].offsetWidth<=hbar.offsetWidth+17&&!changeposv){

bgbar.style.display="none";

hbar.childNodes[0].style.width=0;

hbar.style.width=hbar.offsetWidth+17;

vbar.style.height=vbar.offsetHeight+17;

changeposv=true;

if(vbar.offsetHeight-dataobj.offsetHeight>dataobj.offsetTop&&document.all){

leftobj.style.top=leftobj.offsetTop+17;

dataobj.style.top=dataobj.offsetTop+17;

}

}

}

//鼠标滚轮,列表滚动事件

functionmwEvent(e){

e=e||window.event;

if(e.wheelDelta<=0||e.detail>0){

vbar.scrollTop+=18;

}else{

vbar.scrollTop-=18;

}

}

functionae(obj){

if(document.attachEvent){

obj.attachEvent("onmousewheel",mwEvent);

}else{

obj.addEventListener("DOMMouseScroll",mwEvent,false);

}

}

//滚动条事件

functionscrv(){

leftobj.style.top=-(vbar.scrollTop);

dataobj.style.top=-(vbar.scrollTop);

}

functionscrh(){

titleobj.style.left=-(hbar.scrollLeft);

dataobj.style.left=-(hbar.scrollLeft);

}

//选择行

functiongetrow(e){

e=e||window.event;

varesrcobj=e.srcElement?e.srcElement:e.target;

if(esrcobj.parentNode.tagName=="TR"){

varepobj=esrcobj.parentNode;

vareprowindex=epobj.rowIndex;

if(eprowindex!=0){

if(nowrow!=null){

dataobj.rows[nowrow].className="";

}

dataobj.rows[eprowindex].className="selectedrow";

nowrow=eprowindex;

}

}

}

//更改列宽

this.rsc_d=function(e,obj){

varpx=document.all?e.offsetX:e.layerX-obj.offsetLeft;

if(px>obj.offsetWidth-6&&px<obj.offsetWidth){

e=e||window.event;

obj=obj||this;

ml=e.clientX;

ow=obj.offsetWidth;

tdobj=obj;

if(obj.setCapture){

obj.setCapture();

}else{

e.preventDefault();

}

}else{

if(nowrow!=null){

dataobj.rows[nowrow].className="";

}

if(obj.getAttribute("sort")==null){

obj.setAttribute("sort",0);

}

varsort=obj.getAttribute("sort");

if(sort==1){

dgsort(obj,true);

obj.setAttribute("sort",0);

}else{

dgsort(obj,false);

obj.setAttribute("sort",1);

}

obj.className="sortdown";

}

}

this.mouseup=function(obj){

obj.className="over";

}

functionrsc_m(e){

if(tdobj!=null){

e=e||window.event;

varnewwidth=ow-(ml-e.clientX);

if(newwidth>5){

tdobj.style.width=newwidth;

dataobj.rows[0].cells[tdobj.cellIndex].style.width=newwidth;

}else{

tdobj.style.width=5;

dataobj.rows[0].cells[tdobj.cellIndex].style.width=5;

}

dh.setwh();

scrh();

}

}

functionrsc_u(e){

if(tdobj!=null){

e=e||window.event;

varnewwidth=ow-(ml-e.clientX);

if(newwidth>5){

tdobj.style.width=newwidth;

dataobj.rows[0].cells[tdobj.cellIndex].style.width=newwidth;

}else{

tdobj.style.width=5;

dataobj.rows[0].cells[tdobj.cellIndex].style.width=5;

}

if(tdobj.releaseCapture){

tdobj.releaseCapture();

}

ml=0;

ow=0;

tdobj=null;

}

dh.setwh();

scrh();

}

this.cc=function(e,obj){

varpx=document.all?e.offsetX:e.layerX-obj.offsetLeft;

if(px>obj.offsetWidth-6&&px<obj.offsetWidth){

obj.style.cursor="col-resize";

}else{

obj.style.cursor="default";

}

}

this.over=function(obj){

obj.className="over";

}

this.out=function(obj){

obj.className="column";

}

this.dataover=function(obj){

if(obj.rowIndex!=nowrow){

obj.className="dataover";

}

}

this.dataout=function(obj){

if(obj.rowIndex!=nowrow){

obj.className="";

}

}

//键盘Up&Down事件

functionupdown(e){

e=e||window.event;e=e.which||e.keyCode;

varrl=dh.data.length;

switch(e){

case38://Up;

if(nowrow!=null&&nowrow>1){

vbar.scrollTop-=18;

dataobj.rows[nowrow].className="";

nowrow-=1;

dataobj.rows[nowrow].className="selectedrow";

};

break;

case40://Down;

if(nowrow!=null&&nowrow<rl){

vbar.scrollTop+=18;

dataobj.rows[nowrow].className="";

nowrow+=1;

dataobj.rows[nowrow].className="selectedrow";

};

break;

default:break;

}

}

functiondti(s){

varn=0;

vara=s.match(/d+/g);

for(vari=0;i<a.length;i++){

if(a[i].length<2){

a[i]="0"+a[i];

}

}

n=a.join("");

returnn;

}

//排序

functiondgsort(obj,asc){

varrl=dh.data.length;

varci=obj.cellIndex;

varrowsobj=[];

for(vari=1;i<dataobj.childNodes[0].rows.length;i++){

rowsobj[i-1]=dataobj.childNodes[0].rows[i];

}

rowsobj.sort(function(trObj1,trObj2){

if(!isNaN(trObj1.cells[ci].innerHTML.charAt(0))&&!isNaN(trObj2.cells[ci].innerHTML.charAt(0))){

if(asc){

returndti(trObj1.cells[ci].innerHTML)-dti(trObj2.cells[ci].innerHTML);

}else{

returndti(trObj2.cells[ci].innerHTML)-dti(trObj1.cells[ci].innerHTML);

}

}else{

if(asc){

returntrObj1.cells[ci].innerHTML.localeCompare(trObj2.cells[ci].innerHTML);

}else{

returntrObj2.cells[ci].innerHTML.localeCompare(trObj1.cells[ci].innerHTML);

}

}

});

for(vari=0;i<rowsobj.length;i++){

dataobj.childNodes[0].appendChild(rowsobj[i]);

}

for(varc=1;c<obj.parentNode.cells.length-1;c++){

obj.parentNode.cells[c].childNodes[1].innerHTML="";

}

if(asc){

obj.childNodes[1].innerHTML="▲";

}else{

obj.childNodes[1].innerHTML="▼";

}

}

}

<html>

<head>

<metahttp-equiv="content-type"content="type=text/html;charset=gb2312">

<linktype="text/css"rel="stylesheet"href="default/dhdatagrid.css">

<scriptlanguage="javascript"src="dhdatagrid.js"></script>

</head>

<bodystyle="background:#ECE9D8;">

<scriptlanguage="javascript">

vardhdg=newdhdatagrid();

dhdg.callname="dhdg";

dhdg.columns=["名称","大小","修改时间"];

dhdg.data=[["01.jpg","49KB","2006-12-617:06"],["02.gif","3KB","2006-12-617:06"],["axjz.jpg","121KB","2007-1-1910:19"],["bb.jpg","314KB","2006-10-2415:49"],["cd056.jpg","50KB","2007-1-510:03"],["d.psd","27,639KB","2006-11-613:31"],["dhAJ2.htm","12KB","2006-12-2110:53"],["dhChange.htm","12KB","2006-10-199:28"],["dhcombobox.htm","2KB","2006-12-2211:39"],["保险.txt","5KB","2007-1-311:31"],["滨江丽景.rar","1,048KB","2007-1-1814:23"],["积分兑奖.doc","634KB","2007-1-1911:17"],["亲人.jpg","396KB","2006-12-2315:50"],["未标题-2.jpg","61KB","2006-12-2315:46"]];

dhdg.dblclick_fun=function(e){alert(e+',ondblclick');}

dhdg.contextmenu_fun=function(e){alert(e+',oncontextmenu');}

dhdg.init();

dhdg.setwh();

</script>

</body>

</html>

注:DEMO(演示):http://www.jxxg.com/dh20156/dhdatagrid/

原文:http://blog.csdn.net/dh20156/archive/2007/02/08/1505050.aspx

另外一个封装的很简单的gridby秦皇也爱JS

<style>

table{width:120%;height:auto;background:#E8E8E8;margin:0auto;cursor:pointer}

tableth{background:url(http://www.cpp114.com/cppjob/bg.gif)repeat-x;font-size:12px;padding:2px0;}

tabletd{font-size:12px;text-align:center;padding:2px0;}

input{border:none;position:absolute;display:none;text-align:center;}

select{position:absolute;display:none;}

</style>

<script>

varGridData={

title:["姓名","性别","年龄","学历","特长"],

type:[0,1,0,1,0],//编辑框类型ŀ--textboxŁ---select

order:[-1,-1,-1,-1,-1],//排序类型Ł----升序-1---降序

data:[["张三","男",27,"本科","足球"],

["YM","男",26,"本科","中锋"],

["McGrady","男",28,"博士","前锋"],

["James","男",25,"本科","小前锋"],

["Good","女",21,"高中","商品"],

["Fut","男",22,"本科","WAR3"],

["Keens","男",37,"高中","SC"],

["Gruby","女",32,"本科","SC"],

["Grrr","男",19,"硕士","SC"],

["Sky","男",22,"本科","WAR3"],

["Moon","男",25,"本科","WAR3"]]

};

var性别=["男","女"];

var学历=["高中","本科","硕士","博士"];

functionMyGrid(data,cnt){

MyGrid.backColor="#fdfdfd";

MyGrid.hoverColor="#edfae9";

MyGrid.clickColor="#e1e6f1";

this.datas=data;

this.container=cnt;

this.table;

this.curRow;

this.curCell;

this.editTools=[document.body.appendChild(document.createElement("input")),document.body.appendChild(document.createElement("select"))];

varCurGrid=this;

this.load=function(){//grid重画模块

/**加载table**/

vartbStr=[];

tbStr.push("<tablecellspacing='1'><trheight='25'>");

for(varointhis.datas.title){

tbStr.push("<th>"+this.datas.title[o]+(this.datas.order[o]==1?"↑":"↓")+"</th>");

}

tbStr.push("</tr>");

for(variinthis.datas.data){

tbStr.push("<trbgcolor="+MyGrid.backColor+"height='25'>");

for(varjinthis.datas.data[i]){

tbStr.push("<td>"+this.datas.data[i][j]+"</td>");

}

tbStr.push("</tr>");

}

tbStr.push("</table>");

this.container.innerHTML=tbStr.join("");

this.table=this.container.firstChild;

/**设置编辑工具**/

this.editTools[0].onblur=function(){

CurGrid.curCell.removeChild(CurGrid.curCell.firstChild)

CurGrid.curCell.appendChild(document.createTextNode(this.value));

if(isNaN(CurGrid.datas.data[CurGrid.curCell.parentNode.rowIndex-1][CurGrid.curCell.cellIndex])){

CurGrid.datas.data[CurGrid.curCell.parentNode.rowIndex-1][CurGrid.curCell.cellIndex]=this.value;

}else{

CurGrid.datas.data[CurGrid.curCell.parentNode.rowIndex-1][CurGrid.curCell.cellIndex]=Number(this.value)

}

this.value="";

this.style.display="none";

}

this.editTools[1].onblur=function(){

this.options.length=0;

this.style.display="none";

}

this.editTools[1].onchange=function(){

CurGrid.curCell.removeChild(CurGrid.curCell.firstChild)

CurGrid.curCell.appendChild(document.createTextNode(this.value));

CurGrid.datas.data[CurGrid.curCell.parentNode.rowIndex-1][CurGrid.curCell.cellIndex]=this.value;

this.options.length=0;

this.style.display="none";

}

/**设置单元格**/

for(varr=1;r<this.table.rows.length;r++){

this.table.rows[r].onmouseover=function(){this.style.backgroundColor=MyGrid.hoverColor;}

this.table.rows[r].onmouseout=function(){

if(CurGrid.curRow!=this)this.style.backgroundColor=MyGrid.backColor;

elsethis.style.backgroundColor=MyGrid.clickColor;

}

for(varc=0;c<this.table.rows[r].cells.length;c++){

this.table.rows[r].cells[c].onclick=function(){

if(CurGrid.curRow)CurGrid.curRow.style.backgroundColor=MyGrid.backColor;

CurGrid.curRow=this.parentNode;

this.parentNode.style.backgroundColor=MyGrid.clickColor;

}

this.table.rows[r].cells[c].ondblclick=function(){

//alert("("+this.cellIndex+","+this.parentNode.rowIndex+")"+this.firstChild.data);

CurGrid.curCell=this;

CurGrid.editTools[CurGrid.datas.type[this.cellIndex]].style.display="block";

CurGrid.editTools[CurGrid.datas.type[this.cellIndex]].style.width=this.offsetWidth;

CurGrid.editTools[CurGrid.datas.type[this.cellIndex]].style.height=this.offsetHeight;

CurGrid.editTools[CurGrid.datas.type[this.cellIndex]].style.left=getAbsPos(this).leftx-CurGrid.container.scrollLeft;

CurGrid.editTools[CurGrid.datas.type[this.cellIndex]].style.top=getAbsPos(this).topy-CurGrid.container.scrollTop;

CurGrid.editTools[CurGrid.datas.type[this.cellIndex]].focus();

if(CurGrid.datas.type[this.cellIndex]==0){

CurGrid.editTools[CurGrid.datas.type[this.cellIndex]].select();

}elseif(CurGrid.datas.type[this.cellIndex]==1){

CurGrid.loadSelect(CurGrid.datas.title[this.cellIndex]);

}

CurGrid.editTools[CurGrid.datas.type[this.cellIndex]].value=this.firstChild.data;

}

}

}

for(varg=0;g<this.table.rows[0].cells.length;g++){

this.table.rows[0].cells[g].onclick=function(){

CurGrid.datas.order[this.cellIndex]=-CurGrid.datas.order[this.cellIndex];

CurGrid.sort(this.cellIndex,CurGrid.datas.order[this.cellIndex]);

}

}

}

this.sort=function(n,type){//排序

this.datas.data=this.datas.data.sort(function(x,y){if(x[n]>y[n]){returntype;}elseif(x[n]<y[n]){return-type;}else{return0;}});

this.load();

}

this.delRow=function(){//删除行

this.datas.data.splice(this.curRow.rowIndex-1,1);

this.table.deleteRow(this.curRow.rowIndex);

}

this.loadSelect=function(type){//读取下拉框内容

varopts=this.editTools[1].options;

for(varoineval(type)){

varopt=document.createElement("option");

opt.value=opt.text=eval(type)[o];

opts.add(opt);

}

}

}

vargrid;

window.onload=loadGrid;

functionloadGrid(){

grid=newMyGrid(GridData,$("panel"));

grid.load();

}

function$(id){

returndocument.getElementById?document.getElementById(id):eval(id);

}

functiongetAbsPos(obj){

varobjResult=newObject();

objResult.topy=obj.offsetTop;

objResult.leftx=obj.offsetLeft;

while(obj=obj.offsetParent){

objResult.topy+=obj.offsetTop;

objResult.leftx+=obj.offsetLeft;

}

returnobjResult;

}

</script>

<divid="panel"style="width:300px;height:300px;overflow:scroll;">

</div><br>

<inputtype="button"value="导出当前行"onclick="if(grid.curRow)alert(grid.curRow.innerText);else{alert('请选中一行');}"style="display:block;border:1pxoutset;"><br>

<inputtype="button"value="导出所有数据"onclick="alert(grid.datas.data.join('n'))"style="display:block;border:1pxoutset;"><br>

<inputtype="button"value="删除行"onclick="grid.delRow();"style="display:block;border:1pxoutset;"><br>

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类