2014-08-29 2 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

Вы обновляете значения Textboxes из базы данных в вашем Page_Load. Каждый раз, когда страница отправляется назад, она получает значения из базы данных и устанавливает в TextBoxes. Вам нужно добавить проверку и только обновить значения и установить в текстовые поля, если первая страница загружена и не отправлена ​​обратно. Как это:

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

Это решаемая проблема Спасибо за Quick Response ..... –

+0

Пометить как ответ пожалуйста. –

0

Я знаю: Заказ Событием asp.net PreInit -init -InitComplete -PreLoad - LoadPage - события управления -LoadComplete -PreRender -SaveStateComplete -Render -Unload

Поэтому , Когда кнопка u onckick, веб-страница будет ispostback. после, вызвать 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; 

}}

Смежные вопросы