2014-08-29 5 views
0

내 페이지에 일부 텍스트 상자가 있습니다. 데이터베이스에서 값을 가져오고 내 페이지로드시 Textbox를 업데이트하고 있습니다. 업데이트 버튼 뒤에 데이터베이스의 값을 업데이트하는 코드가 있습니다. 문제는 텍스트 상자 값을 변경하고 업데이트 버튼을 클릭하면 텍스트 상자의 값이 원래 값이됩니다. 그것은 그 가치를 유지합니다. 내 코드는 당신은 당신의 Page_Load에 데이터베이스에서 텍스트 상자의 값을 업데이트하는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

입니다. 페이지가 게시 될 때마다 데이터베이스에서 값을 가져 와서 텍스트 상자에 설정합니다. 페이지가 처음으로로드되고 게시되지 않은 경우 수표를 추가하고 값만 업데이트하고 텍스트 상자로 설정해야합니다. 이처럼 :

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

는 대답은 ..... 빠른 응답을 –

+0

마크를 바랍니다 감사합니다. –

0

나는 알고있다 : asp.net PreInit -init -InitComplete -PreLoad의 주문 이벤트 - LoadPage - 제어 이벤트 -LoadComplete -PreRender -SaveStateComplete -Render -Unload 따라서

, 때 onckick 버튼, 웹 페이지 ispostback됩니다. 그 후에 pageload -> EventButton을 호출하십시오. 페이지로드 텍스트 상자에 값이 설정되어 있기 때문에 텍스트 상자 값이 변경됩니다.

편집 코드 :

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; 

} } 문제 해결 그건

관련 문제