웹 양식이 예상대로 작동하지 않고 약간 엉망입니다. 양식에서 전화 번호가 데이터베이스에서 텍스트 상자로 채워집니다. 이 부분은 잘 작동합니다. 그런 다음 사용자는 텍스트 상자에서 값을 편집하고 텍스트 상자의 값으로 데이터베이스의 값을 업데이트하는 버튼을 누릅니다. 이것은 작동하지 않는 부분입니다.텍스트 상자 값을 가져 오지 못했습니다.
여기 내 코드입니다.
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.Net.Mail;
using System.Net.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public partial class contact_edit : System.Web.UI.Page
{
//sql connection here
protected void Page_Load(object sender, EventArgs e)
{
string phoneNum = "";
cn.Open();
SqlCommand command = new SqlCommand("getContactInfo", cn);
command.CommandType = CommandType.StoredProcedure;
SqlDataReader myReader;
myReader = command.ExecuteReader();
while (myReader.Read())
{
phoneNum = myReader.GetString(3).ToString();
}
cn.Close();
//If I take this part out and don't populate textbox,
//my update works. If I leave it, it does not
phone.Text = phoneNum.ToString();
}
protected void update_btn_Click(object sender, EventArgs e)
{
cn.Open();
phone.Text = "";
string updatedPhone = phone.Text;
string updateSQLString = "update contact set Phone_num = '" + updatedPhone +
"'";
SqlCommand updateCommand = new SqlCommand(updateSQLString, cn);
updateCommand.ExecuteNonQuery();
cn.Close();
Response.Redirect("contact_edit.aspx");
}
} 내 업데이트 메서드를 호출 버튼을 누르면
. 전화 텍스트 상자의 값을 가져 오려고 시도합니다. 그러나 폼이로드 된 후 텍스트 상자 값을 변경 한 다음 업데이트 단추를 누르면 폼이로드 될 때 원래 텍스트 상자에 지정된 값이 유지됩니다. 왜 이런 일이 일어나는 걸까요?
포스트 백 포스트 백 포스트 백을! – Learner
당신은 정말로 데이터베이스 호출을하고있는 Page_Load의 코드 특히 리팩토링해야합니다. 이것은'PostBack' 때문에'If (! IsPostBack) '를 나타내는 코드를 수행하지 않기 때문에 제 의견으로는 분리 된 메서드에 있어야합니다. – MethodMan
페이지 포스트 백 때문일 수 있습니다. 이 기사를 읽는 것을 고려하십시오 : http://www.codeproject.com/Articles/68371/Detecting-Refresh-or-Postback-in-ASP-NET – Learner