2013-02-01 191 views
3

當我輸入新數據並按下更新按鈕時,它會保存舊數據(我希望它更新的數據)。asp.net gridview編輯按鈕不更新

public void fill() 
{ 
    SqlCommand cmd = new SqlCommand("select * from school ",con); 
    con.Open(); 
    SqlDataReader rd = cmd.ExecuteReader(); 

    GridView1.DataSource = rd; 
    GridView1.DataBind(); 
    con.Close(); 
} 

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    fill(); 
} 

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 

    int id = int.Parse(((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text); 
    string stu =((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text; 
    int age = int.Parse(((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text); 

    SqlCommand cmd = new SqlCommand("UPDATE school SET [email protected]_name,[email protected] where [email protected] ", con); 
    cmd.Parameters.Add(new SqlParameter("@id", id)); 
    cmd.Parameters.Add(new SqlParameter("@stu_name", stu)); 
    cmd.Parameters.Add(new SqlParameter ("@age",age)); 

    con.Open(); 
    cmd.ExecuteNonQuery(); 
    con.Close(); 

    GridView1.EditIndex = -1; 
    fill(); 
} 

他的問題,分配給名字的數值,年齡都在數據庫中現有的值不是我在運行時 任何一個能幫助我進入了新的價值觀 在此先感謝

+0

你在page_load中有什麼,你可以發佈該代碼? – Kiran1016

+0

歡迎來到SO。你在頁面加載時寫了什麼? –

+0

人們仍然使用網絡表單? –

回答

0

您每次編輯時重新填充網格。

改爲在grid init上調用fill();

+0

沒有解決問題, 問題是分配給name,age的值是數據庫中的現有值 – moon

0

這是關於網頁表格的Life Cycle的一些信息。我認爲您需要的只是將fill();包裝在if聲明中。因爲page_load發生在您的事件處理程序之前,所以您可以從輸入的值之上的db重新加載。

if(!PostBack) 
{ 
    fill(); 
}