c#gridview无法创建新行

时间:2015-07-09 10:28:40

标签: c# asp.net gridview visual-studio-2013

我有一个gridview,一个按钮和一个文本框。在文本框中输入值时,在按钮上单击该值应显示在gridview中。一切顺利,直到我插入第二个值。 gridview不会创建新行并保留数据,而是刷新页面并将第二个值插入第一个值的位置。

我被告知这与页面加载有关,但我不知道如何阻止这种情况发生。

这是我的代码:

protected void Buton1_Click(object sender, EventArgs e)
{
  DataTable dt = new DataTable();
  DataColumn dc = new DataColumn("Name");
  dt.Columns.Add(dc);
  DataRow dr = dt.NewRow();
  dr["Name"] = TextBox1.Text;
  dt.Rows.Add(dr);
  dt.AcceptChanges();
  GridView1.DataSource = dt;
  GridView1.DataBind();
}

3 个答案:

答案 0 :(得分:0)

请尝试以下代码:

protected void Page_Load(object sender, EventArgs e)
{
   if (!Page.IsPostback)
      {
         DataTable dt = new DataTable();
         ViewState.Add("dt", dt);
      }
}

protected void Buton1_Click(object sender, EventArgs e)
{
  Datatable dtable = (Datatable)ViewState["dt"];
  if (ViewState["dt"] == null)
  {
      DataColumn dc = new DataColumn("Name");
      dtable.Columns.Add(dc);
  }
      DataRow dr = dtable.NewRow();
      dr["Name"] = TextBox1.Text;
      dtable.Rows.Add(dr);
      dtable.AcceptChanges();
      GridView1.DataSource = dtable;
      GridView1.DataBind();
      ViewState["dt"] = dtable;
}

答案 1 :(得分:0)

Asp.net是无状态的,所以你必须使用一些状态管理技术来管理控件的状态。例如会议

protected void Buton1_Click(object sender, EventArgs e)
{
  DataTable dt =null;
 if(Session["GridData"]==null)//Initialize a new session only if first time
 {
    dt= new DataTable();
    DataColumn dc = new DataColumn("Name");
    dt.Columns.Add(dc);
 }
 else 
 {
    dt=Session["GridData"] as DataTable;
 }

  DataRow dr = dt.NewRow();
  dr["Name"] = TextBox1.Text;
  dt.Rows.Add(dr);
  dt.AcceptChanges();
  GridView1.DataSource = dt;
  GridView1.DataBind();
  Session["GridData"]=dt;//save data in session to retrive in next click
}

答案 2 :(得分:0)

试试这个:

Enter