想想HTTP提交是怎么工作的,在后端你只能从QueryString或Form或Cookie里获取数据,ASP.NET又可以从ViewState获取数据(从Form里来),如果你添加的东西不在这些数据里的话,后端怎么能获取?加一个隐藏控件,把DHTML动态添加的数据传回去!

解决方案 »

  1.   

    思归老大讲得极是, HTTP本来就不是基于连接的
    双方的交互是通过post/querystring  Response.Write实现虽然有提交,但是 form中  只有<input 或select textarea等元素是可提交的table与其他html元素都不能提交值
    如要实现,需要他们帮助
    如:function Button1_onclick() {
        objTable = document.getElementById("Table1");
        var objRow = objTable.insertRow(objTable.rows.length);
        var objCell = objRow.insertCell(0);
        objCell.innerText = objTable.rows.length.toString();
    加上
    document.Form1.hidInput1.value = objTable.innerHTML;}
      

  2.   

    没错。我以前也遇到这问题用的就是saucer(思归/MVP)的方法“加一个隐藏控件,把DHTML动态添加的数据传回去!”
    =================================
    新一代论坛 http://www.xlfancy.com
    1. 所见即所得的Web文本编辑  
    2. 程序代码的高亮显示: 
       Ada、C、C++、C#、Delphi、ILasm、JS.NET、MASM、VB、VB.NET  
    3. 奇快无比的“引用”“编辑”“回复”。任意的同时多次“引用”
       多个不同的发言。
      

  3.   

    把值放到一个hidden里,后台用Request.Form[name]得到客户端的数据
      

  4.   

    我也遇到过这样的问题。
    我是通过这样的办法解决的,每次添加的时候生成一个XML文件,然后通过XML文件来动态生成表单。
      

  5.   

    多谢幕白兄的提示我先在客户端脚本用
    document.Form1.hidInput1.value = objTable.outerHTML;而后在codebehind中用
    Request.Form1["hidInput1"]得到了整个Table1的标记字符串然后呢?我怎么把这一大串标记转换为一个HtmlTable对象啊,.NET有没有提供方便的类啊,几位老大,再教教我,送佛送到西天啊。
      

  6.   

    this.Label1.Text = this.Table1.Rows.Count.ToString();
    page_load