2017-04-15 77 views
0

我有一個gridview有兩列其中之一是模板字段與下拉列表..我想用gridview外的保存按鈕保存所有行到數據庫,但當我點擊它只保存gridview的第一行..我如何保存整個gridview到數據庫?將gridview的所有行保存到數據庫asp.net c#

protected void Button1_Click(object sender, EventArgs e) 
     { 

      for (int i = 0; i < GridView2.Rows.Count; i++) 
      { 

        GridViewRow row = GridView2.Rows[i]; 

        string coursecode = DropDownList1.SelectedValue.ToString(); 
        string weekno = DropDownList2.SelectedValue.ToString(); 
        string day = DropDownList3.SelectedValue; 
        string stid = row.Cells[0].Text; 
        DropDownList ddlstatus = (DropDownList)row.Cells[1].FindControl("DropDownList9"); 
        string status = ddlstatus.SelectedValue.ToString(); 

        double percentage; 
        if (status == "A") 
        { 
         if (day == "Saturday") 
         { 
          percentage = 6.66; 
         } 
         else 
         { 
          percentage = 3.33; 
         } 
        } 
        else 
        { 
         percentage = 0; 
        } 


        String strConnString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
        SqlConnection con = new SqlConnection(strConnString); 
        String query = "insert into Attendance values (@CourseCode, @St_ID, @WeekNo, @Day,@Status, @Percentage)"; 
        SqlCommand cmd = new SqlCommand(query, con); 
        cmd.Parameters.AddWithValue("@CourseCode", coursecode); 
        cmd.Parameters.AddWithValue("@WeekNo", weekno); 
        cmd.Parameters.AddWithValue("@Day", day); 
        cmd.Parameters.AddWithValue("@St_ID", stid); 
        cmd.Parameters.AddWithValue("@Status", status); 
        cmd.Parameters.AddWithValue("@Percentage", percentage); 
        con.Open(); 
        cmd.ExecuteNonQuery(); 
        con.Close(); 
        Response.Redirect("~/DoctorAddEditAttendance.aspx"); 
       } 
      } 
+0

這是因爲你'Redirect'內循環。但是如果你使用數據綁定,你會更容易。 – Crowcoder

+0

解決了,謝謝。你能否寫下你的答案,以便我可以標記爲已解決 –

回答

0

Redirect移到循環的外部,以便完成所有行的處理。

順便說一句,這是更好的做法是這樣重定向:

Response.Redirect("~/DoctorAddEditAttendance.aspx", false); 
Context.ApplicationInstance.CompleteRequest();