2014-08-29 58 views
0

我的頁面中有一些文本框。我從數據庫中獲取值,並在頁面加載中更新文本框。我有一個代碼來更新數據庫中更新按鈕後面的值。問題是,當我更改文本框的值並單擊更新按鈕時,文本框中的值又是原始值。它保留了它的價值。我的代碼是文本框的值不會在asp.net中更新

protected void Page_Load(object sender, EventArgs e) 
    { 
     int id = Convert.ToInt32(Session["DocumentID"]); 
     Connection conn = new Connection(); 
     string query = "SELECT * from Document where DocumentID='" + id + "'"; 
     SqlCommand sqlcom = new SqlCommand(query, conn.conopen()); 
     SqlDataAdapter daexp = new SqlDataAdapter(sqlcom); 
     System.Data.DataTable dtexp = new System.Data.DataTable(); 
     daexp.Fill(dtexp); 
     TextBox1.Text = dtexp.Rows[0][1].ToString(); 
     TextBox3.Text = dtexp.Rows[0][2].ToString(); 
     TextBox6.Text = dtexp.Rows[0][3].ToString(); 
     TextBox4.Text = dtexp.Rows[0][4].ToString(); 
     TextBox5.Text = dtexp.Rows[0][5].ToString(); 
     TextBox7.Text = dtexp.Rows[0][6].ToString(); 
     TextBox7.ReadOnly = true; 
    } 



protected void Button1_Click(object sender, EventArgs e) 
    { 
    int id = Convert.ToInt32(Session["DocumentID"].ToString()); 
    if (FileUpload1.HasFile) 
    { 
     HttpPostedFile Image = FileUpload1.PostedFile; 
     string contentType = Image.ContentType; 
     if (contentType.Equals("application/octet-stream")) 
     { 
      contentType = "application/pdf"; 
     } 
     else if (contentType.Equals("application/vnd.openxmlformats-officedocument.wordprocessingml.document")) 
     { 
      contentType = "application/msword"; 
     } 
     int nFileLen = Image.ContentLength; 
     byte[] myData = new byte[nFileLen]; 
     Image.InputStream.Read(myData, 0, nFileLen); 
     Connection con = new Connection(); 
     con.conopen(); 
     string query = "UPDATE Document SET Setup='" + TextBox1.Text + "', ReferenceNO='" + TextBox3.Text + "', DocumentDate='" + TextBox6.Text + "', Subject='" + TextBox4.Text + "', NameOfInitiator='" + TextBox5.Text + "', [email protected], FolderID='" + DropDownList1.Text + "', DocTypeID='" + DropDownList4.Text + "', DirectorateID='" + DropDownList3.Text + "', OrganizationID='" + DropDownList2.Text + "' WHERE DocumentID='" + id + "'"; 
     SqlCommand sqlcom = new SqlCommand(query, con.conopen()); 
     sqlcom.Parameters.AddWithValue("@Doc", myData); 
     sqlcom.ExecuteNonQuery(); 
     Label12.Text = "Document Updated Successfully"; 
     Label12.ForeColor = System.Drawing.Color.Green; 
     Label12.Visible = true; 
     Label12.Text = "Document Updated Successfully"; 
     Label12.ForeColor = System.Drawing.Color.Green; 
     Label12.Visible = true; 
    } 
    else 
    { 
     Connection conn = new Connection(); 
     string query = "UPDATE Document SET Setup='" + TextBox1.Text + "', ReferenceNO='" + TextBox3.Text + "', DocumentDate='" + TextBox6.Text + "', Subject='" + TextBox4.Text + "', NameOfInitiator='" + TextBox5.Text + "', FolderID='" + DropDownList1.Text + "', DocTypeID='" + DropDownList4.Text + "', DirectorateID='" + DropDownList3.Text + "', OrganizationID='" + DropDownList2.Text + "' WHERE DocumentID='" + id + "'"; 
     SqlCommand sqlcom = new SqlCommand(query, conn.conopen()); 
     sqlcom.ExecuteNonQuery(); 
    } 
    } 

回答

0

您正在更新Page_Load中的數據庫的文本框的值。每次頁面回發時,它都會從數據庫獲取值,並在TextBoxes中進行設置。您需要添加檢查並僅更新值,並且設置爲文本框(如果頁面第一次加載並且未回傳)。就像這樣:

protected void Page_Load(object sender, EventArgs e) 
{ 
if(!Page.IsPostBack) 
{ 
//your code here... 
} 
} 
+0

這解決了問題,謝謝你的快速反應..... – 2014-08-29 17:09:23

+0

標記爲答案,請。 – 2014-08-29 17:15:07

0

我知道:asp.net PreInit -init -InitComplete -PreLoad令事件 - LoadPage - 控制事件 -LoadComplete -PreRender -SaveStateComplete -Render -unload

因此當你點擊按鈕時,網頁將會回傳。之後,調用pageload - > EventButton。文本框的值發生變化,因爲您的文本框的值設置爲pageload

編輯代碼:

protected void Page_Load(object sender, EventArgs e) 
    { 
if(!Page.IsPostBack){ 
    int id = Convert.ToInt32(Session["DocumentID"]); 
    Connection conn = new Connection(); 
    string query = "SELECT * from Document where DocumentID='" + id + "'"; 
    SqlCommand sqlcom = new SqlCommand(query, conn.conopen()); 
    SqlDataAdapter daexp = new SqlDataAdapter(sqlcom); 
    System.Data.DataTable dtexp = new System.Data.DataTable(); 
    daexp.Fill(dtexp); 
    TextBox1.Text = dtexp.Rows[0][1].ToString(); 
    TextBox3.Text = dtexp.Rows[0][2].ToString(); 
    TextBox6.Text = dtexp.Rows[0][3].ToString(); 
    TextBox4.Text = dtexp.Rows[0][4].ToString(); 
    TextBox5.Text = dtexp.Rows[0][5].ToString(); 
    TextBox7.Text = dtexp.Rows[0][6].ToString(); 
    TextBox7.ReadOnly = true; 

}}