【ASP.NET坑】Page_Load和btn_click

在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被原值覆蓋。達不到修改的效果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章