在Page_Load中,Ispostback==true表示頁面回傳,當在頁面點擊button時,會先執行Page_Load,然後執行button_click函數。如果不加Ispostback判斷,就會導致,textbox修改的東西會被原值覆蓋。
例如:
protected void change()
{
string sql = "select * from Student where id = " + id.ToString();
cmd = new MySqlCommand(sql, conn);
MySqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
//
nametxt.Text = reader.GetString("name");
//
int gender = reader.GetInt32("gender");
if (gender == 1) RadioButton1.Checked = true;
else RadioButton2.Checked = true;
//
//datetxt.Text = reader.GetDateTime("birthday");
departmentxt.Text = reader.GetString("department");
//
majortxt.Text = reader.GetString("major");
//
string hobby = reader.GetString("hobby");
if (hobby.IndexOf("read") != -1) read.Checked = true;
if (hobby.IndexOf("sport") != -1) sport.Checked = true;
if (hobby.IndexOf("music") != -1) music.Checked = true;
if (hobby.IndexOf("internet") != -1) internet.Checked = true;
if (hobby.IndexOf("travel") != -1) travel.Checked = true;
if (hobby.IndexOf("elses") != -1) elses.Checked = true;
//
}
reader.Close();
}
protected void Page_Load(object sender, EventArgs e)
{
id = (int)Session["stuid"];
conn = (MySqlConnection)Session["Conn"];
//conn.Open();
if (!IsPostBack)
{
change();
}
}
protected void Button3_Click(object sender, EventArgs e)
{
int id = (int)Session["stuid"];
int result = deleteinfo(id);
Console.WriteLine(result);
if (result == 1)
{
string pwd = (string)Session["pwd"];
string name = nametxt.Text;
int gender = 0;
if (RadioButton1.Checked == true) gender = 1;
else gender = 2;
//
string birthday = "19980727";
//birthday
//
string department = null;
department = departmentxt.Text;
string major = null;
major = majortxt.Text;
string hobby = null;
if (read.Checked == true) hobby += "read ";
if (sport.Checked == true) hobby += "sport ";
if (music.Checked == true) hobby += "music ";
if (internet.Checked == true) hobby += "internet ";
if (travel.Checked == true) hobby += "travel ";
if (elses.Checked == true) hobby += "elses ";
string sql2 = "insert into Student values(" + id.ToString() + ",'" + name + "'," + gender.ToString() + ",'" + birthday + "','" + department + "','" + major + "','" + hobby + "','" + pwd + "')";
cmd = new MySqlCommand(sql2, conn);
int res = cmd.ExecuteNonQuery();
change();
Response.Redirect("StudentManageForm.aspx");
}
else Response.Write("<script>alert('更新失敗')</script>");
}
如果不加!Ispostback判斷,就會導致textbox被原值覆蓋。達不到修改的效果。