保存历史数据的办法http://msdn.microsoft.com/library/default.asp?url=/workshop/author/persistence/persistence_ovw_entry.asp

解决方案 »

  1.   

    <STYLE>
       .saveHistory {behavior:url(#default#savehistory);}
    </STYLE>
    <table  CLASS="saveHistory"  STYLE="behavior:url(#default#savehistory)">
      

  2.   

    net_lover(孟子E章):按你说的方法还是不行啊,不知道你有没有明白我的意思!!!
      

  3.   

    "动态增加表格行"恐怕是IE独有的东西,恐怕不是很标准,IE版本不同恐怕支持程度不一样吧。
    我对这种技术还是比较谨慎。
    如果是给自己用还好,要是给互联网用户,兼容性恐怕
      

  4.   

    cleo(无为而为):
       那你用什么来解决碰到的这种问题!!
      

  5.   

    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <style>
    TD,INPUT{ font-size:9pt; }
    </style>
    <title>明细ID</title>
    </head><body>
    <form name="frm" method=post ><table align="center" bordercolor=cccccc border=1  width=100% >
    <tr> <td align=right>
          <input type="button"  value="增加" class="bottom" onclick="addDetailProcess();">&nbsp;
          <input type="button"  value="删除" class="bottom" onclick="delDetailProcess();">&nbsp;
          <input type="button"  value="完成" class="bottom" onclick="document.frm.submit();">
    </td>
    </tr>
    </table>
    <div width=100% id=thedetailtableDIV>
    <table align="center" bordercolor=cccccc border=1 onkeydown='keyDownControl(event.srcElement)' width=100% >
    <tbody id="tbDetailPrepare">
    <tr>
    <td ><input type="checkbox" name="record_select" ></td>
    <td ><input type="text" name="detail_id" value='' ></td>
    <td ><input type="text" name="detail_name" value='' ></td>
    </tr>
    </tbody>
      <tr bgcolor=eeeeee id="trDetailTitles"> 
        <td ><input type=checkbox onclick="selectallcheckbox(this)"></td>
        <td >明细ID</td>
        <td >明细NAME</td>
      </tr>
      <tbody id="tbDetailUsed" >
    <tr>
    <td ><input type="checkbox" name="record_select" ></td>
    <td ><input type="text" name="detail_id" value='' ></td>
    <td ><input type="text" name="detail_name" value='' ></td>
    </tr> <tr height=0 ><td colspan=100 height=0 > 合计</td></tr>
      </tbody> </table>
    </div>
    </form><input name="theHistoryRecord" type=hidden value="">
    </body></html><script language=javascript> window.onload = historyOncemore;
    window.onbeforeunload = fixHistory; function fixHistory() //记住历史
    {
    document.all("theHistoryRecord").value=document.all("thedetailtableDIV").innerHTML.replace(/\n/g,"");
    } function historyOncemore() //恢复历史
    {
    if (document.all("theHistoryRecord").value!="")
    {document.all("thedetailtableDIV").innerHTML=document.all("theHistoryRecord").value;
    }
    } function selectallcheckbox(obj) //全选或全不选
    {
    var tureorfalse=obj.checked;
    var theDetail=tbDetailUsed.rows;
    for(var i=0;i<theDetail.length-1;i++)
    {
    theDetail[i].all("record_select").checked=tureorfalse;
    }
    }


    function addDetailProcess(afterRowIndex) //增加明细
    {
    var alltbDetailUsed= document.all("tbDetailUsed").rows;
    var theFirstSelectedDetail;
    if (afterRowIndex==null)
    {
    for(var i=0;i<alltbDetailUsed.length-1;i++)
    {
    if (alltbDetailUsed[i].all("record_select").checked==true) {theFirstSelectedDetail=i;break;}
    }
    if (theFirstSelectedDetail==null) {theFirstSelectedDetail=alltbDetailUsed.length-2;}
    }
    else theFirstSelectedDetail=afterRowIndex;
    var newRow = document.all("tbDetailPrepare").rows[0].cloneNode(true);
    var desRow = alltbDetailUsed[theFirstSelectedDetail+1];
    desRow.parentElement.insertBefore(newRow,desRow ); }

    function delDetailProcess() //删除明细
    {
    var alltbDetailUsed= document.all("tbDetailUsed").rows;
    if (confirm("确定选择正确并且要将这些明细删除")==false) return false;
    for(var i=0;i<alltbDetailUsed.length-1;i++)
    {
    if (alltbDetailUsed[i].all("record_select").checked==true)
    {
    document.all("tbDetailUsed").deleteRow(i);
    i=i-1;
    }
    }
    } function keyDownControl(obj) //用于控制明细里的上下键。只控制input
    {
    if(obj.tagName!="INPUT"||obj.name=="") return true;
    k=event.keyCode;
    if(!(k==38||k==40)) return true;
    var theSamenameInputs=document.all(obj.name);
    var i=0;
    if (theSamenameInputs.length>1)
    {
    for (i=0;i<theSamenameInputs.length;i++)
    { if (theSamenameInputs[i]==obj) break; }
    }
    if((i==theSamenameInputs.length-1)&&(k==40))
    {
    if(document.all("autoAddDetailCheckbox")!=null&&document.all("autoAddDetailCheckbox").checked)
    addDetailProcess(theSamenameInputs.length-2);
    }
    if((i>0)&&(k==38))
    {
    theSamenameInputs[i-1].select();
    theSamenameInputs[i-1].focus();
    event.returnValue=false;
    return false;
    }
    if((i<theSamenameInputs.length-1)&&(k==40))
    {
    theSamenameInputs[i+1].select();
    theSamenameInputs[i+1].focus();
    event.returnValue=false;
    return false;
    }
    }</script>
      

  6.   

    你用这种技术,又想返回上页有保存效果,用一个又简单又快的技术。
    <form action="test.asp" traget="_blank"></form>
    这样不是很好吗?
      

  7.   

    我想方法有许多,我们没必要只是想着当用户返回那个界面是如何恢复数据状态.因为我们把数据提交到新的页面时,没有必要一定要关闭原来的页面,这样做是最方便也是最安全的.我建议做包含上下两个frame的页面,当输入数据时,下面那个frame的高度为0,所以看不到它.当填完数据要提交时,把它提交到下面的那个frame,并把下面的frame高度设置为窗口的高度,而把上面的那个frame的高度设置为0,使得从浏览器上只看到确认的那个页面.当用户点击确认页面上的返回那个按钮时,再把上面的那个frame伸展出来.重新把下面那个frame的高度设置为0.使别人看不到它.我只是提供一种实现的方式,其实其它方法还有许多我想.
      

  8.   

    cleo(无为而为):我需要的就是这种 动态的输入效果,而不是一下子输入多行!!