这是自然的,你做的新增并没有进入viewstate

解决方案 »

  1.   

    if(!Page.IsPostBack)
    {
    HtmlTableRow tr = new HtmlTableRow();
    HtmlTableCell td = new HtmlTableCell();
    td.InnerHtml="aaa";
    tr.Cells.Add(td);
    ht.Rows.Add(tr);//ht是界面上的一个Htmltable
    }
      

  2.   

    我也碰到过,不要用if(!ispostboak)检测,它会再建立
    page_load(..)
    {
    HtmlTableRow tr = new HtmlTableRow();
    HtmlTableCell td = new HtmlTableCell();
    td.InnerHtml="aaa";
    tr.Cells.Add(td);
    ht.Rows.Add(tr);//ht是界面上的一个Htmltable
    }
      

  3.   

    假如
    td.Control.Add(new TextBox());
    tr.Cells.Add(td);
    页面回传了虽然消失,但再调用动态创建行过程
    再新建立后,居然还可以保留在单元格文本框中输入的内容,真奇怪,大家说说这是为什么
      

  4.   

    刚刚才发了一帖相关的:
    http://expert.csdn.net/Expert/TopicView1.asp?id=2555813
      

  5.   

    还是手动维护ViewState嘛和我一样
      

  6.   

    给你一段注意别放在ispostback加上protected System.Web.UI.HtmlControls.HtmlTable ta;HtmlTableRow row4 = new HtmlTableRow();
    Label string4 = new Label();
    ds = conadd.ExecuteSqlDs("select colname, colhy, length from con
    for(int i= 0;i<ds.Tables[0].Rows.Count;i++)
    { HtmlTableCell cell40 = new HtmlTableCell();
    HtmlTableCell cell41 = new HtmlTableCell();
    string4 = new Label();
    string4.ID = "Label"+ds.Tables[0].Rows[i]["colname"].ToStrin
    string4.Text = ds.Tables[0].Rows[i]["colhy"].ToString();
    cell40 = new HtmlTableCell();
    cell40.Controls.Add(string4); text4 = new TextBox[ds.Tables[0].Rows.Count];
    text4[i] = new TextBox();
    text4[i].ID = ds.Tables[0].Rows[i]["colname"].ToString();
    text4[i].Width = 100;
    text4[i].ToolTip ="自定义货币类型!";
    stringtext4.Add(text4[i].ID);
    cell41 = new HtmlTableCell();
    cell41.Controls.Add(text4[i]); row4 = new  HtmlTableRow();
    row4.Cells.Add(cell40);
    row4.Cells.Add(cell41);
    ta.Rows.Add(row4);
    }
    //**************************************************************HtmlTableRow rowvv = new HtmlTableRow();
    rowvv.Align = "center";
    Button Btn = new Button();
    Btn.ID = "Btn_0";
    Btn.Width = 60;
    Btn.Height = 20;
    Btn.Text = "提 交";
    Btn.BorderStyle = BorderStyle.Solid ;
    Btn.CssClass = "aa";
    Btn.BorderWidth = 1;Button BtnLook = new Button();
    BtnLook.ID = "Btn_1";
    BtnLook.Width = 60;
    BtnLook.Height = 20;
    BtnLook.Text = "查 看";
    BtnLook.CausesValidation = false;
    BtnLook.BorderStyle = BorderStyle.Solid ;
    BtnLook.CssClass = "aa";
    BtnLook.BorderWidth = 1;HtmlTableCell cell = new HtmlTableCell();
    cell.ColSpan = 2;
    cell.Controls.Add(Btn);
    cell.Controls.Add(BtnLook);
    rowvv.Cells.Add(cell);
    ta.Rows.Add(rowvv);
    Btn.Click +=new EventHandler(AddButton_Click);
    BtnLook.Click +=new EventHandler(ButtonLook_Click);
      

  7.   

    加一个string[]的属性get时从ViewState里取
    set时往ViewState里存Load时:
    if (!PostBack) {
      初始化此属性(可以用数据库的结果填充)
    }
    else {
      将页面内控件的值填充写入属性(这相当于保存当前视图状态)
    }绑定时:
      将此属性内的值依次写入控件的值(这相当于恢复视图状态)
      

  8.   

    Html控件没有ViewState来保存原来的值,
    方法有2:一个是不要加if(!IsPostBack)判断,每次进入Page_Load事件时给他付值,第二是把Html对象设置为静态Static变量。
    ///////////////////
    建议:想这种动态加在行的行为,最好用web control 来做,因为他们都有ViewState来保存状态值。
      

  9.   

    哈哈,同志们
    //定义一个模块级变量,记录动态增加记录数
    private int intAddRows = 0;private void Page_Load(object sender, System.EventArgs e)
    {
    if (ViewState["intAddRows"] != null)
    {
    intAddRows = (int)ViewState["intAddRows"];
    } // 在此调用增加行函数或语句
    for(int i=0 ; i < intAddRows;i++)
    {
                 //...
    }
    }private void btnContinue_Click(object sender, System.EventArgs e)
    {
        intAddRows ++;
        ViewState["intAddRows"] = intAddRows;
    }
      

  10.   

    好谢谢大家,问题解决了!感谢  uno(钢盅郭子) liuzhonghe(呆头鹅) flygoldfish(flygoldfish)
      

  11.   

    不用在设计界面拉出HtmlTable 控件
    public class WebForm5 : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Button Button1;
    protected static HtmlTable ht=new HtmlTable();
             private void Page_Load(object sender, System.EventArgs e)
    {
    if(!IsPostBack)
    {
    HtmlTableRow tr = new HtmlTableRow();
    HtmlTableCell td = new HtmlTableCell();
    td.InnerHtml="aaa";
    tr.Cells.Add(td);
    ht.Rows.Add(tr);//
    Page.Controls.Add(ht);
    }

    }
              private void Button1_Click(object sender, System.EventArgs e)
    {
    HtmlTableRow tr = new HtmlTableRow();
    HtmlTableCell td = new HtmlTableCell();
    td.InnerHtml="aaa";
    tr.Cells.Add(td);
    ht.Rows.Add(tr);
    Page.Controls.Add(ht);
    }
    }