将数据插入到girdview而不发送到数据库

本文关键字:数据库 girdview 数据 插入 | 更新日期: 2023-09-27 18:16:19

我有这个代码

 DataTable dt = new DataTable("MyDataTable");
dt.Columns.Add("Value1");
dt.Columns.Add("Value2");
dt.Columns.Add("Value3");
dt.Rows.Add(TextBox1.Text, TextBox2.Text, TextBox3.Text);
GridView1.DataSource = dt;
GridView1.DataBind();

当我尝试使用此代码将数据插入gridview时,新值将替换为旧值。

将数据插入到girdview而不发送到数据库

你正在重新绑定gridview。这将擦除现有数据。如果您想更新网格视图,我建议将新行添加到持久数据存储并从中刷新。这可以是一个数据库表或数据结构。

页面中的每个控件都会在每次请求时重新创建。看一下ASP。. NET页面生命周期概述。

处理这个问题的典型方法是使用Page。在Page_Load方法中的IsPostBack属性:
if (!Page.IsPostBack)
{
    DataTable dt = new DataTable("MyDataTable");
    dt.Columns.Add("Value1");
    dt.Columns.Add("Value2");
    dt.Columns.Add("Value3");
    dt.Rows.Add(TextBox1.Text, TextBox2.Text, TextBox3.Text);
    GridView1.DataSource = dt;
    GridView1.DataBind();
}

这将允许您的网格视图在两次回发之间持续存在。

另一个问题是你将GridView绑定到一个新的DataTable实例,覆盖当前的DataSource。要解决这个问题,需要在请求之间持久化数据表数据,通常是在数据库、xml文件或其他数据源中。

您可以向已经绑定到Grid的DataTable添加新的datarow。为了防止将这些作为新行发送到DB,请在DataRow上调用.AcceptChanges