2012-01-18 64 views
0

我只有一列的gridview。我已經寫了這樣的代碼如何將gridview內容存儲到數據庫表中

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     SqlConnection con = new SqlConnection(strConnString); 
     con.Open(); 

     for (int i = 0; i < GridView1.Rows.Count; i++) 
     { 
      string Users = GridView1.Rows[i].Cells[0].Text; 

      string strQuery = "insert into Table1 (FileName, DateTimeUploaded, Type, Username)" + 
      " values(@FileName, @DateTimeUploaded, @Type, @Username)"; 
      SqlCommand cmd = new SqlCommand(strQuery); 

      cmd.Parameters.AddWithValue("@FileName", datalink); 
      cmd.Parameters.AddWithValue("@Type", ext); 
      cmd.Parameters.AddWithValue("@DateTimeUploaded", DateTime.Now); 
      cmd.Parameters.AddWithValue("@Username", Users); 

      cmd.CommandType = CommandType.Text; 
      cmd.Connection = con; 
      cmd.ExecuteNonQuery(); 

     } 
     con.Close(); 
     con.Dispose(); 

      } 

如果GridView控件有兩行,然後第一行存儲在數據庫中的兩倍。如果gridview有3行,那麼第一行將被存儲三次。我該如何解決這個問題?

+0

你可能想要做在做太多之前搜索「.Net數據綁定」。你可能會發現一些你想要的東西...... – 2012-01-18 22:15:43

+0

你應該檢查代碼中的「e.ItemType」。 – Praveen 2012-01-18 22:18:48

回答

1

說明:

您將您的數據到數據庫裏面的GridView的RowDataBound事件 - 這是每執行一個DataRow被綁定的時間!這一點,隨着事實,你的每一行使用循環翻過每個時間:

for (int i = 0; i < GridView1.Rows.Count; i++) { // inserting record from each row } 

意味着你的行會被插入不止一次隨着越來越多的行綁定。您需要刪除for循環,並使用e.Row.Cells[0]來引用並插入當前綁定的行數據。

string Users = e.Row.Cells[0].Text; 

你可能還需要檢查僅用於數據行讓你的操作不會對頁腳/標題行等發生

新代碼:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     SqlConnection con = new SqlConnection(strConnString); 
     con.Open(); 

     string Users = e.Row.Cells[0].Text; // current row being bound 

     string strQuery = "insert into Table1 (FileName, DateTimeUploaded, Type, Username)" + 
     " values(@FileName, @DateTimeUploaded, @Type, @Username)"; 
     SqlCommand cmd = new SqlCommand(strQuery); 

     cmd.Parameters.AddWithValue("@FileName", datalink); 
     cmd.Parameters.AddWithValue("@Type", ext); 
     cmd.Parameters.AddWithValue("@DateTimeUploaded", DateTime.Now); 
     cmd.Parameters.AddWithValue("@Username", Users); 

     cmd.CommandType = CommandType.Text; 
     cmd.Connection = con; 
     cmd.ExecuteNonQuery(); 

     con.Close(); 
     con.Dispose(); 
    } 
} 
相關問題