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

时间:2011-11-30 16:21:03

标签: c# asp.net

我有这个代码

 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时,新值将替换为旧值。如何开发它以添加新记录而无需替换。

2 个答案:

答案 0 :(得分:0)

每个请求都会重新创建页面中的每个控件。看看ASP.NET Page Life Cycle Overview

处理此问题的典型方法是在Page_Load方法中使用Page.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文件或其他一些数据源中。

答案 1 :(得分:0)

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

相关问题