你的代码太少,上面的没问题,可能是其他原因!
请确保你的按钮第二次是不是真的激发了CLICK事件,比如在里面加入RESPONSE.WRITE("BUTTON_CLICK"),第二次按的时候是不是显示了

解决方案 »

  1.   

    try
    <%@ Import Namespace="System.Data" %>
    <form runat=server>
    <asp:DataGrid id=DataGrid1 runat=server/>
    <asp:Button id=btn runat=server Text=Add Onclick=Add />
    <asp:Button id=btn2 runat=server Text=Submit />
    </form>
    <script language=C# runat=server>
    const int ColumnCount = 3;DataTable GetTable()
    {
      DataTable dt;
      if (Session["MyData"] == null)
      {
           dt = new DataTable();
           for (int i=1; i <= ColumnCount; i++)
    dt.Columns.Add("Col" + i.ToString(), typeof(string));       Session["MyData"] = dt;
      }  return (DataTable)Session["MyData"];
    }
    void Page_PreRender(Object sender, EventArgs e)
    {
      DataGrid1.DataSource = GetTable().DefaultView;
      DataGrid1.DataBind();
    }void Add(Object sender, EventArgs e)
    {
    Random r = new Random();        DataTable dt = GetTable();
            DataRow dr = dt.NewRow();        for (int j=0; j < ColumnCount; j++)
            {
              if (j==0)
    dr[0] = DateTime.Now.ToString();
      else 
    dr[j] = r.Next().ToString();
            }        dt.Rows.Add(dr);
    }
    </script>
      

  2.   

    不要意思,昨天我错了,
    今天一时想起,特来改正!
    你的错误在于服务器控件在回访时,只负责保持控件状态值,他并不保证能创键它下面的控件,所以你必须在回访时重新创造TABLEROW,
    如下:(C#)
    if(Session["index"]==null)
    {
    index = 1;

    }
    else

    {
    index = (int) Session["index"];
    }
    for(int i=0;i<index;i++)
    {
    TableRow row = new TableRow();
    TableCell cell = new TableCell();
    TextBox box 

    row.Cells.Add(cell);
    Table1.Rows.Add(row);
                
    Response.Write(index.ToString());
    }
      
    Session["index"] = ++index;