有一个表格asp:Table,页面中,通过后台操作实现了增加行操作,每个行里有若干cell,每个cell里边或者有一个dropdownlist,或者是textbox等交互式控件。    麻烦在于,每次在动态表格中进行了交互操作(选择、录入)后,点击提交按钮后,页面直接刷新,这个过程中,前边增加的那些cell、交互式控件、row都丢掉了,更谈不上读取里边的数据了。    那么,我该怎么办?    谢谢!

解决方案 »

  1.   

    添加行的那些代码放在(!ispostback)试试
      

  2.   

    JS生成的,除非你用AJAX不然是取不到的.
    要不就用后台动态添加,但是会增加服务器负担不建议用。
      

  3.   

    看看1楼的建议,另外,如果你在前端用js生成的新行,要后端能读取数据,需要用一个隐藏控件,然后自己定义一些标准,组装成一个字符串,也可以JSON之类的,后端就能读取了。
      

  4.   

    动态增加行,是在!base.ispostback里头做的,问题是,提交以后,还没有刚进入Page_Init函数,还没进行base.ispostback判断的时候,已经发现表格里边动态加入的东西都没有了.......
      

  5.   


    后台代码,其中,main_table是一个原来有2行的表格:
     private  int maintable_Rownums = 1;
     protected void Page_Init(object sender, EventArgs e)
     {
       /********/
       if (!base.IsPostBack)
       {
         AddTableRows(main_table, maintable_Rownums,12);
       }
     }
    protected void AddTableRows( Table table, int rowcounts, int cellcounts)
    {
       Unit  lineheight=new Unit (100);
       for (int i = 0; i < rowcounts ; i++)
       {
         TableRow row = new TableRow();
         row.Height = lineheight;
         for (int j = 0; j < cellcounts ; j++)
         {
           TableCell cell = new TableCell();
           cell.BorderWidth = Unit.Pixel(1);
           cell.BorderColor = System.Drawing.Color.Black;
           cell.HorizontalAlign = HorizontalAlign.Center;
           switch (j)
           {
              case  0:
                 cell.Text = (i + 1).ToString ();
                 break ;
              case 1:
                 DropDownList tmpdl = new DropDownList();
                 file.readsoncompany(tmpdl, Auth.getuserunit(this.Session["username"].ToString()));
                 tmpdl.CssClass = "maintable_droplistdown";
                 tmpdl.EnableViewState = true;
                 cell.Controls.Add(tmpdl);
                 break;
               case 2:
                 。
                   。
                   。
               default :
                 break;
            }
            row.Cells.Add(cell);
          }
          table.Rows.Add(row);
        }
    }页面上一个普通按钮,按下后,在/********/处设置断点,发现表格的行数已经变成2(未动态增加行之前的状态)了。
      

  6.   

    搞定了,参考如下页面:
    http://hi.baidu.com/usasp/blog/item/c0affd636f93cf630d33fa06.html添加前边已经增加的行,其实是不能在(!ispostback)里边做的,正好相反,要在外边。散热心分!