2016-12-04 151 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 /如何到保存最數據集,之後的決策,改變到的數據庫 –