2016-12-04 76 views
0

我有一个datagridview,在其中显示来自我的数据库的信息。
我希望我的用户在最后一行添加信息,然后他会点击添加按钮,将新行添加到数据库中。
该功能如下。当我调试它时,它遍历我所有的行,获取所有信息,但它不会将我的新行添加到数据库。
函数不会将数据添加到我的数据库中

private void addNewAgent() 
{ 
    int row = 0; 

    if (ViewState["CurrentTable"] !=null) 
    { 
     DataTable mydt = (DataTable)ViewState["CurrentTable"]; 
     DataRow myrow = null;    

     if (mydt.Rows.Count>0) 
     { 
      for (int i = 1; i <= mydt.Rows.Count; i++) 
      { 

       TextBox fn = GridView1.Rows[row].Cells[1].FindControl("txt_FirstName") as TextBox; 
       TextBox ln = GridView1.Rows[row].Cells[2].FindControl("txt_LastName") as TextBox; 
       TextBox email = GridView1.Rows[row].Cells[3].FindControl("txt_Email") as TextBox; 

       myrow = mydt.NewRow(); 
       myrow["UserID"] = i + 1; 
       mydt.Rows[i - 1]["FirstName"] = fn.Text; 
       mydt.Rows[i - 1]["LastName"] = ln.Text; 
       mydt.Rows[i - 1]["email"] = email.Text; 

       row++;     
      } 
      mydt.Rows.Add(myrow);     
      ViewState["CurrentTable"] = mydt; 
      GridView1.DataSource = mydt; 
      GridView1.DataBind();    
     } 
     else 
     { 
      Response.Write("view state is null"); 
     } 
    } 

} 

回答

0

您错过了将数据保存在数据库中的代码。 现在,您只需将gridview数据添加到viewstate数据表中即可。 我不明白这一点,因为gridview本身已经在视图状态下维护其数据。

imho,你应该在页面加载时在gridview中加载数据 捕捉gridview rowcommands(编辑,更新,删除)来更新数据库。

你会很容易发现样品在线如何通过一个GridView管理数据 这里是一个http://asp.net-informations.com/gridview/gridview-operations.htm

如果你有特殊原因不能坚持立即编辑数据,您可以添加一个按钮“更新DB”那将循环浏览您的viewstate数据表中的所有记录,并明确更新相关数据库记录

+0

但通过这样做:mydt.Rows.Add(myrow);我添加到我的桌子不?然后我通常使用我的命令生成器 – NewPassionnate

+1

您的数据表从数据库断开连接(在内存中),要坚持其更改,需要专门调用命令或逻辑(例如,使用sqldataadapter)请参阅http://stackoverflow.com/questions/7055799 /如何到保存最数据集,之后的决策,改变到的数据库 –