你的问题不是“屏避原来添加的记录”,而是postback的问题()
if (!Page.IsPostBack)
{
Session["yourtable"]=aaa;//aaa is you datatable
}else
{
aaa=(DataTable)Session["yourtable"];
}

解决方案 »

  1.   

    <%@ Import Namespace="System.Data" %>
     
    <html>   <script language="C#" runat="server">
     
          DataTable Cart = new DataTable();
          DataView CartView;   
     
          void Page_Load(Object sender, EventArgs e) 
          {
             DataRow dr;
     
             if (Session["ShoppingCart"] == null) 
             {       
     
                Cart.Columns.Add(new DataColumn("Qty", typeof(String)));
                Cart.Columns.Add(new DataColumn("Item", typeof(String)));
                Cart.Columns.Add(new DataColumn("Price", typeof(String)));
                Session["ShoppingCart"] = Cart;
                 
                // Create some rows and insert some sample data.
                for (int i = 1; i <= 4; i++) 
                {
                   dr = Cart.NewRow();
                   if (i % 2 != 0)
                      dr[0] = "2";
                   else
                      dr[0] = "1";
                   dr[1] = "Item " + i.ToString();
                   dr[2] = (1.23 * (i + 1)).ToString();
                   Cart.Rows.Add(dr);
                }
             }
             else
                Cart = (DataTable)Session["ShoppingCart"];          
     
             CartView = new DataView(Cart);
             CartView.Sort="Item";
     
             if (!IsPostBack)
                BindGrid(); 
                       
          }
     
          void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e) 
          {
             MyDataGrid.EditItemIndex = e.Item.ItemIndex;
             BindGrid();
          }
     
          void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e) 
          {
             MyDataGrid.EditItemIndex = -1;
             BindGrid();
          }
     
          void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e) 
          {
             // For bound columns, the edited value is stored in a TextBox.
             // The TextBox is the 0th element in the column's cell.
             TextBox qtyText = (TextBox)e.Item.Cells[2].Controls[0];
             TextBox priceText = (TextBox)e.Item.Cells[3].Controls[0];
     
             String item = e.Item.Cells[1].Text;  
             String qty = qtyText.Text;
             String price = priceText.Text;
            
             DataRow dr;
     
             // With a database, use an update command to update the data. Because 
             // the data source in this example is an in-memory DataTable, delete the 
             // old row and replace it with a new one.         // Remove old entry.
             CartView.RowFilter = "Item='" + item + "'";
             if (CartView.Count > 0)
                CartView.Delete(0);
             CartView.RowFilter = "";
     
             // Add new entry.
             dr = Cart.NewRow();
             dr[0] = qty;
             dr[1] = item;
             dr[2] = price;
             Cart.Rows.Add(dr);
     
             MyDataGrid.EditItemIndex = -1;
             BindGrid();
          }
     
          void BindGrid() 
          {
             MyDataGrid.DataSource = CartView;
             MyDataGrid.DataBind();
          } 
     
       </script>
     
    <body>
     
       <form runat="server">      <h3>DataGrid Editing Example</h3>
     
          <asp:DataGrid id="MyDataGrid" runat="server"
               BorderColor="black"
               BorderWidth="1"
               CellPadding="3"
               Font-Name="Verdana"
               Font-Size="8pt"
               OnEditCommand="MyDataGrid_Edit"
               OnCancelCommand="MyDataGrid_Cancel"
               OnUpdateCommand="MyDataGrid_Update"
               AutoGenerateColumns="false">         <HeaderStyle BackColor="#aaaadd">
             </HeaderStyle>
     
             <Columns>
                <asp:EditCommandColumn
                     EditText="Edit"
                     CancelText="Cancel"
                     UpdateText="Update"
                     HeaderText="Edit Command Column">               <ItemStyle Wrap="false">
                   </ItemStyle>               <HeaderStyle Wrap="false">
                   </HeaderStyle>            </asp:EditCommandColumn>
     
                <asp:BoundColumn HeaderText="Item" ReadOnly="true" DataField="Item"/>
                <asp:BoundColumn HeaderText="Quantity" DataField="Qty"/>
                <asp:BoundColumn HeaderText="Price" DataField="Price"/>
             </Columns>
          </asp:DataGrid>
     
       </form>
     
    </body>
    </html>
    这是MS的help,你可以参考一下,先用dataview来保存,最后在update DB
      

  2.   

    应该放咋再page_load事件中吧!
    if not ispostpack then 
        session("dataset") = _my_data_set //这里换成dataset也可以吧!
    else
        _my_data_set = session("dataset")
    end if 
    是这样的吗?
    而且问题2 如何解决呢!dongchuanlu(匡奇) 再帮小弟一把!
      

  3.   

    我是这样写的:
    在button_onclick事件中
     _my_data_adapter.Update(_my_data_set, "study")
            Datagrid1.DataSource = _my_data_set
            Datagrid1.DataBind()
    可是报错说:当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand。源错误: 
    行 86: 
    行 87:     Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    行 88:         _my_data_adapter.Update(_my_data_set, "study")//错的地方
    行 89:         Datagrid1.DataSource = _my_data_set
    行 90:         Datagrid1.DataBind()
     源文件: E:\xagdj\tt\WebKf.aspx.vb    行: 88 
      

  4.   

    我是用C#的,VBNET的的不熟C#中是:定义一个command,然后定义一个sqldataadapter将其用
    sqldataadpter.selectcommand = command;关联到command;
    定义一个commandbuilder,然后
    commandbuilder.dataadpter = sqldataadpter关联到sqldataadpter
    然后用sqldataadpter.fill(dataset,table)填充至表,
    然后修改表中的数据最后用dataadpter.update()将修改后的数据提交至数据库。
    在上述过程中,command对象不可再做其他的数据库操作。
    查一下书书上都应有的。
      

  5.   

    问:燕七大虾:
    我的保存回数据库的update
    不是放在添加中一步完成的,
    我放在另一个按钮的奠基事件中完成,
    该怎么办呢?
      

  6.   

    我已经定义为全局的了
    报错为:
    当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand。源错误: 
    行 86: 
    行 87:     Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    行 88:         _my_data_adapter.Update(_my_data_set, "study")//错的地方
    行 89:         Datagrid1.DataSource = _my_data_set
    行 90:         Datagrid1.DataBind()
     源文件: E:\xagdj\tt\WebKf.aspx.vb    行: 88 
    帮忙呀!
      

  7.   

    你是乍样添加新行的我是用:
    datarow dd = dataset.table[0].newrow();
    然后
    dataset.table[0].rows.add(dd);
      

  8.   

    还不行?要不然将你的要保存的DATASET放在CACHE里试试。