2011-06-15 76 views
0

我試圖更新使用存儲過程在asp.net GridView中,但它總是重置爲初始值。我究竟做錯了什麼?更新取消gridview的asp.net

編輯:所有頁面的代碼現在加入

protected void page_PreInit(object sender, EventArgs e) 
    { 
     MembershipUser UserName; 
     try 
     { 
      if (User.Identity.IsAuthenticated) 
      { 
       // Set theme in preInit event 
       UserName = Membership.GetUser(User.Identity.Name); 
       Session["UserName"] = UserName; 
      } 

     } 
     catch (Exception ex) 
     { 
      string msg = ex.Message; 


     } 


    } 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     userLabel.Text = Session["UserName"].ToString(); 

     SqlDataReader myDataReader = default(SqlDataReader); 

     SqlConnection MyConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["RescueAnimalsIrelandConnectionString"].ConnectionString); 

     SqlCommand command = new SqlCommand("sp_EditRescueDetails", MyConnection); 

     if (!User.Identity.IsAuthenticated) 
     { 
     } 
     else 
     { 
      command.Parameters.AddWithValue("@UserName", userLabel.Text.Trim()); 

     } 

     try 
     { 
      command.CommandType = CommandType.StoredProcedure; 
      MyConnection.Open(); 


      myDataReader = command.ExecuteReader(CommandBehavior.CloseConnection); 
      // myDataReader.Read(); 


      GridViewED.DataSource = myDataReader; 
      GridViewED.DataBind(); 

      if (GridViewED.Rows.Count >= 1) 
      { 

       GridViewED.Visible = true; 
       lblMsg.Visible = false; 

      } 
      else if (GridViewED.Rows.Count < 1) 
      { 
       GridViewED.Visible = false; 

       lblMsg.Text = "Your search criteria returned no results."; 
       lblMsg.Visible = true; 
      } 





      MyConnection.Close(); 
     } 
     catch (SqlException SQLexc) 
     { 
      Response.Write("Read Failed : " + SQLexc.ToString()); 
     } 
    } 
    //to edit grid view 
    protected void GridViewED_RowEditing(object sender, GridViewEditEventArgs e) 
    { 
     GridViewED.EditIndex = e.NewEditIndex; 

    } 


protected void GridViewED_RowUpdating(object sender, GridViewUpdateEventArgs e) 
    { 

     SqlConnection MyConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["RescueAnimalsIrelandConnectionString"].ConnectionString); 
     SqlCommand command = new SqlCommand("sp_UpdateRescueDetails", MyConnection); 

     if (!User.Identity.IsAuthenticated) 
     { 
     } 
     else 
     { 
      command.Parameters.AddWithValue("@UserName", userLabel.Text.Trim()); 

      command.Parameters.Add("@PostalAddress", SqlDbType.VarChar).Value = ((TextBox)GridViewED.Rows[e.RowIndex].Cells[0].Controls[0]).Text; 

      command.Parameters.Add("@TelephoneNo", SqlDbType.VarChar).Value = ((TextBox)GridViewED.Rows[e.RowIndex].Cells[1].Controls[0]).Text; 

      command.Parameters.Add("@Website", SqlDbType.VarChar).Value = ((TextBox)GridViewED.Rows[e.RowIndex].Cells[2].Controls[0]).Text; 

      command.Parameters.Add("@Email", SqlDbType.VarChar).Value = ((TextBox)GridViewED.Rows[e.RowIndex].Cells[3].Controls[0]).Text; 

     } 


     command.CommandType = CommandType.StoredProcedure; 
     MyConnection.Open(); 

     command.ExecuteNonQuery(); 


     MyConnection.Close(); 


     GridViewED.EditIndex = -1; 



    } 

回答

1

我懷疑的代碼加載網格回傳時被調用,它使數據從數據庫中拉出,當你不希望它。

是的 - 我想你想的代碼只加載如果它不是一個回發。您可以爲此使用Page.IsPostBack屬性。

事情是這樣的:

protected void Page_Load(object sender, EventArgs e) 
{ 
    userLabel.Text = Session["UserName"].ToString(); 

    if (!IsPostBack) { 

    SqlDataReader myDataReader = default(SqlDataReader); 

    SqlConnection MyConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["RescueAnimalsIrelandConnectionString"].ConnectionString); 

    SqlCommand command = new SqlCommand("sp_EditRescueDetails", MyConnection); 

    if (!User.Identity.IsAuthenticated) 
    { 
    } 
    else 
    { 
     command.Parameters.AddWithValue("@UserName", userLabel.Text.Trim()); 

    } 

    try 
    { 
     command.CommandType = CommandType.StoredProcedure; 
     MyConnection.Open(); 


     myDataReader = command.ExecuteReader(CommandBehavior.CloseConnection); 
     // myDataReader.Read(); 


     GridViewED.DataSource = myDataReader; 
     GridViewED.DataBind(); 

     if (GridViewED.Rows.Count >= 1) 
     { 

      GridViewED.Visible = true; 
      lblMsg.Visible = false; 

     } 
     else if (GridViewED.Rows.Count < 1) 
     { 
      GridViewED.Visible = false; 

      lblMsg.Text = "Your search criteria returned no results."; 
      lblMsg.Visible = true; 
     } 





     MyConnection.Close(); 
    } 
    catch (SqlException SQLexc) 
    { 
     Response.Write("Read Failed : " + SQLexc.ToString()); 
    } 
    } 
} 
+0

我現在已經添加了所有的代碼頁 – RyanS 2011-06-15 19:12:08

0

不要在Page_Load事件綁定您的數據。創建一個單獨的方法,然後在頁面加載中,如果!IsPostback,調用它。

進行綁定的原因是它自己的方法,因爲你需要調用它,如果你通過數據集進行分頁,刪除,更新等,在執行任務之後。對一個方法的調用比同一個重複的數據綁定代碼的許多實例要好。