我写的程序是这样的,其中TempTable是一个全局变量,以下为响应一次按钮点击的程序 DataRow TempNewRow; TempNewRow = TempTable.NewRow();
TempNewRow["商品项号"]=TextBox14.Text;
TempNewRow["仓储代码"]=TextBox15.Text;
TempNewRow["商品名称"]=TextBox16.Text;
TempTable.Rows.Add(TempNewRow); DataGrid1.DataBind();
第一次点击按钮,能成功添加一行数据,再点击按钮,却不会再添加一行新的,而是修改第一次添加那行,怎么回事??????大家教教我!!!

解决方案 »

  1.   

    用Session、ViewState保存TempTable或者索性直接写入数据库,不可能凭空保存TempTable
      

  2.   

    用ViewState保存你的TempTable试下
    因为你点击按钮后PostBack了
      

  3.   

    DataGrid1.DataSource = TempTable;
      

  4.   

    保存ViewState["TempTable"] = TempTable;从ViewState取出 TempTable = (DataTable)ViewState["TempTable"];
      

  5.   

    点击按纽
    返回服务器
    重新加载DataTable
    因为之前所增加的没有保存在数据库中
    所以重新加载时并没有之前增加的记录建议在点击按纽后把新增的记录保存到数据库中
      

  6.   

    出现这个现象是正常的原因是,服务器每次加载页面时(无论是第一次,还是用户的提交)都会把页面上的变量重新初始化。
    这是 ASP.NET 的一个机制,也就是说页面是无状态的。
    你若想保存变量的值,可用 ViewState 或是 Session 。他们的用法一样,不同的是 ViewState 保存在客户端, Session 保存在服务器的内存DataRow TempNewRow;
    DataTable TempTable = (DataTable)ViewState["TmpTb"];
    //DataTable TempTable = (DataTable)Session["TmpTb"];
    if(TempTable == null){TempTable = new DataTable()}TempNewRow = TempTable.NewRow();
    TempNewRow["商品项号"]=TextBox14.Text;
    TempNewRow["仓储代码"]=TextBox15.Text;
    TempNewRow["商品名称"]=TextBox16.Text;
    TempTable.Rows.Add(TempNewRow);
    ViewState["TmpTb"] = TempTable;    //用 ViewState 保存
    //Session["TmpTb"]= TempTable;     //用 Session  保存
    DataGrid1.DataSource = TempTable;
    DataGrid1.DataBind();
      

  7.   

    改成这样还是不行,主要这个TempTable是存放一个单证中的很多子项,我需要全部录完再入库
    DataRow TempNewRow; TempTable = (DataTable)ViewState["TempTable"];
    TempNewRow = TempTable.NewRow();
    TempNewRow["商品项号"]=TextBox14.Text;
    TempNewRow["仓储代码"]=TextBox15.Text;
    TempNewRow["商品名称"]=TextBox16.Text;
    TempTable.Rows.Add(TempNewRow);
    TempTable.AcceptChanges();
    ViewState["TempTable"] = TempTable;
      

  8.   

    你每次都重新实例化的是同一个对像,换句话就是说你重新给值了,你想增加的话不能这样写。
    DataColumn dc = new DataColumn("aaa");
    this.tbl.Columns.Add(dc);DataRow dr;
    for( int i = 0; i < 5;i++)
    {
     dr = this.tbl.NewRow();
    dr["aaa"] = i;
    this.tbl.Rows.Add(dr);
    }

    this.dataGrid1.DataSource = this.tbl;
      

  9.   

    DataColumn dc = new DataColumn("aaa");
    this.tbl.Columns.Add(dc);
    ------------------------------
    上面创建列的要放到别处,下面这些就放到button 下
    ----------------------------
    DataRow dr;
    for( int i = 0; i < 5;i++)
    {
     dr = this.tbl.NewRow();
    dr["aaa"] = i;
    this.tbl.Rows.Add(dr);
    }

    this.dataGrid1.DataSource = this.tbl;
    --------------------------------
      

  10.   

    TempTable.Rows.Add(TempNewRow);
    TempTable.AcceptChanges();
    DataGrid1.DataSource = TempTable;
    DataGrid1.DataBind();
      

  11.   

    DataRow TempNewRow;
    DataTable TempTable; TempTable = (DataTable)Session["TempTable"];
    if(TempTable == null){TempTable = new DataTable();}
    TempNewRow = TempTable.NewRow();
    TempNewRow["商品项号"]=TextBox14.Text;
    TempNewRow["仓储代码"]=TextBox15.Text;
    TempNewRow["商品名称"]=TextBox16.Text;
    TempTable.Rows.Add(TempNewRow);
    Session["TempTable"] = TempTable; DataGrid1.DataSource=TempTable;
    DataGrid1.DataBind();这么写了,还是一样,为什么?