我有这个代码
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时,新值将替换为旧值。如何开发它以添加新记录而无需替换。
答案 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。这将擦除现有数据。如果要更新网格视图,我建议将新行添加到持久性数据存储并从中刷新。这可以是数据库表或数据结构。