我写完,本机测试(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>

解决方案 »

  1.   

    上面是测试页面,以下是htc文件(1)
    <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';
    }
    }
      

  2.   

    dbgrid.htc文件(2)
    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>
      

  3.   

    我想我帮不了你了运行了你的代码ie5.0;sp3 可以帮定数据,表格显示了那三行数据
      

  4.   

    ie5的版本早期的有很多问题!
    如果你的目标是支持ie 5,最好不要写.
    而我个人觉得,到ie5.5,通过viewLink
    ,htc可以在自己独立的层面上渲染的时候
    htc才真的好用!
      

  5.   

    我的机子是ie6,所以看不到问题。你是说DoInit()的时候就绑定不了了?
      

  6.   

    不是,数据是采用xmldso,DoInit(主要是绘制界面和初始化变量,与dso操作无关)没有问题,数据应该是自动绑定,但是在ie5中显示了界面,却不能绑定数据。当将页面下载到本地和bdgird.htc联用时,却又都是正常的;当在网络上处理时,在没有打过补丁的ie5上使用,也不能绑定数据;在ie5打过补丁的浏览器上显示有时正常,有时不正常;ie5.5以上版本全部正常。