我要做一个功能类似论坛发表评论的功能,但是不保存数据到数据库中。
只是想用Session或其它什么方式保存asp:table服务器控件的数据;
点击“新增”按钮:
   protected void btnAdd_Click(object sender, EventArgs e)
        {
            TableRow tr = new TableRow();
            TableCell td1 = new TableCell();
            TableCell td2 = new TableCell();
            TextBox txtBox1=new TextBox();
            TextBox txtBox2=new TextBox();
            td1.Controls.Add(txtBox1);
            td2.Controls.Add(txtBox2);
            tr.Cells.Add(td1);
            tr.Cells.Add(td2);
            tabClass.Rows.Add(tr);
        }
但是这样只能添加一条数据,再次点击button控件还是不能增加数据行,都只是显示一条数据,这是为什么呢?

解决方案 »

  1.   

    用jQuery吧。function   AddRow(){
                  var vTb=$("#TbData");//得到表格ID=TbData的jquery对象      
                  //所有的数据行有一个.CaseRow的Class,得到数据行的大小
                  var vNum=$("#TbData tr").filter(".CaseRow").size()+1;//表格有多少个数据行
                  var vTr=$("#TbData #trDataRow1"); //得到表格中的第一行数据        
                  var vTrClone=vTr.clone(true);//创建第一行的副本对象vTrClone
                  vTrClone[0].id="trDataRow"+vNum;//設置 第一個Id為當前獲取索引;防止重複添加多個ID為trDataRow1的數據行;一次添加一個;
                  vTrClone.appendTo(vTb);//把副本单元格对象添加到表格下方        
           }  
        该方法,主要运用了jquery的clone函数,克隆一个table的行副本。然后添加给原来的table。
     
      删除方法关键Code:
     
                  var vNum=$("#TbData tr").filter(".CaseRow").size()+1;//表格有多少个数据行;
                  if(vNum<=2)
                  {
                       alert('请至少留一行');
                       return;
                  }       
                  var vbtnDel=$(this);//得到点击的按钮对象           
                  var vTr=vbtnDel.parent("td").parent("tr");//得到父tr对象;              
                  if(vTr.attr("id")=="trDataRow1")
                  {
                     alert('第一行不能删除!'); //第一行是克隆的基础,不能删除
                     return;
                  }else{
                    vTr.remove();
                  }
      

  2.   

    但是有个问题
    项目是通过表单提交的,如果表单提交失败,就会刷新页面,之前填写的数据都会被刷新掉
    因为项目表单提交是没有做Ajax处理,所以得想办法让数据做缓存,具体怎样做还得靠高手指点。