代码之家  ›  专栏  ›  技术社区  ›  FosterZ

向GridView添加新记录,但不应更新数据库

  •  2
  • FosterZ  · 技术社区  · 14 年前

    我有一个绑定到数据视图的GridView,OnPageLoad我正在填充GridView记录。我有一个文本框和一个按钮,所以现在我想向GridView添加更多的记录,但是这些记录不应该被添加到DB中,它们只是添加到页面中,当然来自DB的默认记录会保留。

    <asp:GridView id="gvItems" runat="server">
     <Columns>
       <asp:TemplateField HeaderText="Item Code" SortExpression="ItemCode">
          <ItemTemplate>
               <asp:Label runat="server" ID="lblIItemCode" Text='<%# Bind("ItemCode") %>' />
          </ItemTemplate>
       </asp:TemplateField>
     </Columns>
    </asp:GridView>
    

    VB.NET Code:

    dvSCart = data.GetSCart(Session("SCartId"), 0, varFilterClause, errorStr)
    gvItems.DataSource = dvSCart
    gvItems.DataBind()
    

    基本上,数据库的数据首先进入页面,然后进入页面。 Textbox 数据应附加到 Gridview 但数据库不应该更新。我试图通过保持 DataView 在里面 ViewState or Session variable 但后来我才知道这是一个错误的方向,而且从那以后就没用了。 Dataview 不能 Serialized . 我只需要一个想法或正确的途径来做到这一点,这可能是在做什么?也许我认为jquery会有帮助,我在谷歌上搜索jquery做一些事情,但我失败了,或者可能是因为我是jquery的新手而不理解。

    [我的备选方案]: 创建临时数据库表并保存它…但我不想使用这个选项。

    5 回复  |  直到 14 年前
        1
  •  3
  •   Zachary    14 年前

            if (!IsPostBack)
            {
                DataTable dt = new DataTable();
    
                using (SqlConnection con = new SqlConnection(conString))
                {
                    SqlCommand cmd = new SqlCommand("SELECT Id, Name, Price FROM MyCart;", con);
                    con.Open();
    
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(dt);
                }
    
                Session["MyData"] = dt;
                GridView1.DataSource = dt;
                GridView1.DataBind();
            }
    

            DataTable dt = new DataTable();
    
            if (Session["MyData"] != null)
            {
                dt = (DataTable)Session["MyData"];
            }
    
            DataRow dr = dt.NewRow();
            dr["Id"] = dt.Rows.Count + 1;
            dr["Name"] = "My New Item";
            dr["Price"] = 19.99;
    
            dt.Rows.Add(dr);
    
            Session["MyData"] = dt;
            GridView1.DataSource = dt;
            GridView1.DataBind();
    

        2
  •  0
  •   Travis    14 年前

        3
  •  0
  •   smirkingman    14 年前

        4
  •  0
  •   abatishchev Marc Gravell    14 年前

        5
  •  0
  •   Arief    14 年前