我写完,本机测试(ie6)完成后,发现在客户机(ie5)上(有很多)运行不正常
<HTML xmlns:db>
<xml id="dt">
<data>
<item>
<id>1</id>
<name>wq</name>
<age>26</age>
<work>worker</work>
</item>
<item>
<id>2</id>
<name>sb</name>
<age>5</age>
<work>adf</work>
</item>
<item>
<id>3</id>
<name>QQ</name>
<age>55</age>
<work>chielf</work>
</item>
</data>
</xml>
<HEAD>
<TITLE></TITLE>
<script id="clientEventHandlersJS" language="javascript">
<!--function Submit1_onclick() {
if(db.mode=='edit')
db.mode='browse';
else
db.mode='edit';
db.setmode();
}//-->
</script>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<style>
db\:dbgrid {behavior:url(dbgrid.htc)}
</style>
</HEAD>
<BODY>
<script language="javascript">
<!--
function m_click(){
//alert;
dt.recordset.AddNew();
}
//-->
</script>
<form action="http://localhost/test/a.asp" method="post" ID="Form1">
<db:dbgrid id="db" dso="dt" ag="left" key="id" mode="browse" flds="id,name,age,work" flds_c="id,name,age,work" />
<input type="button" value="SetMode" ID="Submit1" NAME="Submit1" onclick="return Submit1_onclick()">
<input type="button" value="AddNew" ID="add" NAME="AddNew" onclick="return m_click()">
</form>
</BODY>
</HTML>
<HTML xmlns:db>
<xml id="dt">
<data>
<item>
<id>1</id>
<name>wq</name>
<age>26</age>
<work>worker</work>
</item>
<item>
<id>2</id>
<name>sb</name>
<age>5</age>
<work>adf</work>
</item>
<item>
<id>3</id>
<name>QQ</name>
<age>55</age>
<work>chielf</work>
</item>
</data>
</xml>
<HEAD>
<TITLE></TITLE>
<script id="clientEventHandlersJS" language="javascript">
<!--function Submit1_onclick() {
if(db.mode=='edit')
db.mode='browse';
else
db.mode='edit';
db.setmode();
}//-->
</script>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<style>
db\:dbgrid {behavior:url(dbgrid.htc)}
</style>
</HEAD>
<BODY>
<script language="javascript">
<!--
function m_click(){
//alert;
dt.recordset.AddNew();
}
//-->
</script>
<form action="http://localhost/test/a.asp" method="post" ID="Form1">
<db:dbgrid id="db" dso="dt" ag="left" key="id" mode="browse" flds="id,name,age,work" flds_c="id,name,age,work" />
<input type="button" value="SetMode" ID="Submit1" NAME="Submit1" onclick="return Submit1_onclick()">
<input type="button" value="AddNew" ID="add" NAME="AddNew" onclick="return m_click()">
</form>
</BODY>
</HTML>
<public:component tagname="DBGrid" >
<public:property name="dso" />
<public:property name="flds" />
<public:property name="flds_c" />
<public:property name="ag" />
<public:property name="mode" value="browse" />
<public:property name="dps" value=null />
<public:property name="sel" value=null>
<public:property name="key" value=null>
<public:method name="setmode" />
<public:method name="SetInfo" />
<public:ATTACH EVENT="ondocumentready" HANDLER="DoInit" />
<public:ATTACH EVENT="onmouseover" HANDLER="mouseover" />
<public:ATTACH EVENT="onmousedown" HANDLER="mousedown" />
<public:ATTACH EVENT="onmousemove" HANDLER="mousemove" />
<public:ATTACH EVENT="onmouseup" HANDLER="mouseup" />
</public:componet>
<script>
var dbtbl=null;
var dbtbr=null;var m=false;
var c=-1;
var pos=0;
var old=0;
var vdlt=0;
var rowcount=0;
var crowcount=0;
var b_c=false;function DoInit(){
var aflds=flds.split(',');
var aflds_c=flds_c.split(',');
var k=aflds.length;
var headcol='';
var tddt='';
var tbstr='';
var tbdpstr='';
element.innerHTML='';
//**********************************************************
if(isNaN(dps)){
tbstr='<TABLE id="dbgrid_table" BORDER="1" CELLSPACING="0" CELLPADDING="0" datasrc="#dt" onmouseout="body.style.cursor=\'default\'">';
tbdpstr='</TABLE><div id="ifm" style="font-size:12px"></div></div>';
}
else{
tbstr='<TABLE datapagesize="'+dps+'" id="dbgrid_table" BORDER="1" CELLSPACING="0" CELLPADDING="0" datasrc="#dt" onmouseout="body.style.cursor=\'default\'">';
tbdpstr='</TABLE>'
+'<input name=first type=button onclick="dbgrid_table.firstPage();" value="<<">'
+'<input name=pre type=button onclick="dbgrid_table.previousPage();" value="<">'
+'<input name=next type=button onclick="dbgrid_table.nextPage();" value=">">'
+'<input name=last type=button onclick="dbgrid_table.lastPage();" value=">>">'
+'<span id="ifm" style="font-size:12px"></span></div>';
}
for(var i=0;i<k;i++){
headcol+='<TD><INPUT value="'+aflds_c[i]+'" readonly class="headcol" style="FONT-SIZE:13;BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; WIDTH: 100%; CURSOR: default; BORDER-BOTTOM: medium none; BACKGROUND-COLOR: transparent"></TD>'
}
//**********************************************************
if(mode=='browse'){
for(var i=0,color='';i<k;i++){
tddt+='<TD><span style="FONT-SIZE: 12px" datafld="'+aflds[i]+'"></span></TD>';
}
}
else if(mode=='edit'){
for(var i=0,color='';i<k;i++){
tddt+='<TD><input name="'+aflds[i]+'" datafld="'+aflds[i]+'" style="WIDTH:100px;BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" onmouseover="this.style.backgroundColor=\'ffcc66\'" onmouseout="this.style.backgroundColor=\'white\'"></span></TD>';
}
}
//**********************************************************
element.innerHTML='<div id="dbdiv" align="'+ag+'" style="WIDTH:800px">'
+tbstr
+' <thead>'
+' <TR id="dbgrid_table_row" style="POSITION: relative" borderColorLight="black" bgColor="buttonface" borderColorDark="white">'
+headcol
+' </TR>'
+' </thead>'
+' <TR onmouseover="body.style.cursor=\'hand\';this.bgColor=\'ffcc66\';" onmouseout="this.bgColor=\'white\'">'
+tddt
+' </TR>'
+tbdpstr;
dbtbl=dbgrid_table;
dbtbr=dbtbl.rows(0);
for(var i=0;i<dbtbr.cells.length;i++){
dbtbr.cells(i).width=100;
}
dbtbl.width=k*100;
//fn();
}
function mouseover(){
if(event.srcElement.tagName=='TD'&& event.srcElement.parentElement.id=='dbgrid_table_row'){
element.style.cursor='e-resize';
}
else if(event.srcElement.id=='ifm'){
element.style.cursor='default';
}
else if(event.srcElement.tagName=='DIV'){
element.style.cursor='default';
}
else{
element.style.cursor='hand';
}
}
function mousedown() {
if ((event.srcElement.type!='button')&&(event.srcElement.id!='ifm')&&(event.srcElement.tagName!='DIV'))
{
if (key!=null){
var mk=event.srcElement;
while(mk.tagName!='TR'){
mk=mk.parentElement;
}
if (mk.rowIndex!=0){
for(var i=0;i<dbtbr.cells.length;i++){
if(dbtbl.rows(mk.rowIndex).cells(i).firstChild.dataFld==key)
{
if(mode=='browse'){
sel=dbtbl.rows(mk.rowIndex).cells(i).firstChild.innerText;
break;
}
else if(mode=='edit'){
sel=dbtbl.rows(mk.rowIndex).cells(i).firstChild.value;
}
break;
}
}
}
else
sel=null;
}
else
sel=null;
if (event.srcElement.tagName=='TD'&& event.srcElement.parentElement.id=='dbgrid_table_row'){
m=true;
element.style.cursor='e-resize';
c=event.srcElement.cellIndex;
if (Math.abs(event.offsetX)<5)
c=c-1;
pos=event.x;
old=event.x;
}
}
else
sel=null;
}
function mousemove(){
var dlt;
if (m&&c>-1){
dlt=event.x-pos;
vdlt=event.x-old;
if (Math.abs(vdlt)<catb(c)){
dbtbr.cells(c).width=parseInt(dbtbr.cells(c).width)+dlt;
//dbtbr.cells(c).width=parseInt(dbtbr.cells(c).width)+dlt;
dbtbl.width=parseInt(dbtbl.width)+dlt;
for(var i=1;i<dbtbl.rows.length;i++){
if(dbtbl.rows(i).cells(c).firstChild.tagName=='INPUT'){
dbtbl.rows(i).cells(c).firstChild.style.width=parseInt(dbtbl.rows(i).cells(c).firstChild.style.width)+dlt;
}
}
pos=event.x;
}
}
}
function mouseup(){
m=false;
vdlt=0;
}
function catb(m){
return (dbtbr.cells(m).width);
}
function SetColor(){
alert(msg);
}
function fn(){
crowcount=dbtbl.rows.length;
if (b_c) return;
if (crowcount==rowcount){ //rows has complete!
for(var i=1;i<crowcount;i++){
var m_color=(i%2==1)?'white':'yellow';
for(var j=0;j<dbtbr.cells.length;j++)
{
dbtbl.rows(i).cells(j).bgColor=m_color;
}
}
bc=true;
}
else rowcount=dbtbl.rows.length;
window.setTimeout(element.id+'.fn()',10);
}
function setmode(){
var aflds=flds.split(',');
var aflds_c=flds_c.split(',');
var k=aflds.length;
var headcol='';
var tddt='';
var tbstr='';
var tbdpstr='';
element.innerHTML='';
//**********************************************************
if(isNaN(dps)){
tbstr='<TABLE id="dbgrid_table" BORDER="1" CELLSPACING="0" CELLPADDING="0" datasrc="#dt" onmouseout="body.style.cursor=\'default\'">';
tbdpstr='</TABLE><div id="ifm" style="font-size:12px"></div></div>';
}
else{
tbstr='<TABLE datapagesize="'+dps+'" id="dbgrid_table" BORDER="1" CELLSPACING="0" CELLPADDING="0" datasrc="#dt" onmouseout="body.style.cursor=\'default\'">';
tbdpstr='</TABLE>'
+'<input name=first type=button onclick="dbgrid_table.firstPage();" value="<<">'
+'<input name=pre type=button onclick="dbgrid_table.previousPage();" value="<">'
+'<input name=next type=button onclick="dbgrid_table.nextPage();" value=">">'
+'<input name=last type=button onclick="dbgrid_table.lastPage();" value=">>">'
+'<span id="ifm" style="font-size:12px"></span></div>';
}
for(var i=0;i<k;i++){
headcol+='<TD><INPUT value="'+aflds_c[i]+'" readonly class="headcol" style="FONT-SIZE:13;BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; WIDTH: 100%; CURSOR: default; BORDER-BOTTOM: medium none; BACKGROUND-COLOR: transparent"></TD>'
}
//**********************************************************
if(mode=='browse'){
for(var i=0,color='';i<k;i++){
tddt+='<TD><span style="FONT-SIZE: 12px" datafld="'+aflds[i]+'"></span></TD>';
}
}
else if(mode=='edit'){
for(var i=0,color='';i<k;i++){
tddt+='<TD><input name="'+aflds[i]+'" datafld="'+aflds[i]+'" style="WIDTH:100px;BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" onmouseover="this.style.backgroundColor=\'ffcc66\'" onmouseout="this.style.backgroundColor=\'white\'"></span></TD>';
}
}
//**********************************************************
element.innerHTML='<div id="dbdiv" align="'+ag+'" style="WIDTH:800px">'
+tbstr
+' <thead>'
+' <TR id="dbgrid_table_row" style="POSITION: relative" borderColorLight="black" bgColor="buttonface" borderColorDark="white">'
+headcol
+' </TR>'
+' </thead>'
+' <TR onmouseover="body.style.cursor=\'hand\';this.bgColor=\'ffcc66\';" onmouseout="this.bgColor=\'white\'">'
+tddt
+' </TR>'
+tbdpstr;
dbtbl=dbgrid_table;
dbtbr=dbtbl.rows(0);
for(var i=0;i<dbtbr.cells.length;i++){
dbtbr.cells(i).width=100;
}
dbtbl.width=k*100;
}
function SetInfo(msg){
var el;
for(var i=0;i<dbdiv.all.length;i++){
el=dbdiv.all(i);
if(el.id=='ifm'){
el.innerText=' '+msg;
break;
}
}
}
</script>
如果你的目标是支持ie 5,最好不要写.
而我个人觉得,到ie5.5,通过viewLink
,htc可以在自己独立的层面上渲染的时候
htc才真的好用!