Thursday, April 26, 2012

การทำงาน ของ Postback

บทความนี้ผมจะขอพูดถึง Postback เพื่อให้กระจ่างสำหรับ โปรแกรมเมอร์ มือใหม่ที่ยังไม่เข้าใจการทำงานของ Page event สักเท่าไรนัก ทำให้ไม่สามารถเขียน code ให้เป็นไปตามความเข้าใจได้ ดังนั้นสิ่งแรก ที่เราต้องเข้าใจคือการทำงาน ขอ Postback
ปัญหาสำคัญที่ โปรแกรมเมอร์มือใหม่เจอก็คือ event Page_Loadนั้นจะเกิดขึ้นทุกครั้ง แม้แต่การ click ปุ่ม page_load มันก็ยัง เกิดขึ้นปัญหาก็คือบางครั้งเราต้องการที่จะ เชตค่าตั้งต้นให้กับตัวแปรบางอย่างเฉพาะเมื่อมีการ load page นั้นครั้งแรก เท่านั้นหรือในบางกรณีเราต้องการให้มีการเปลี่ยนแปลงค่าเฉพาะเมื่อมีการ clickปุ่มเท่านั้น
ลองพิจารณาตัวอย่าง นี้กันนะครับ สมมติว่าเราสร้าง form ที่มีลักษณะดังรูปนะครับ
postback1
จากตัวอย่าง เราต้องการให้ Label1 นั้นแสดงข้อมูลใน TextBox1ทุกครั้งเมื่อมีการ Click ปุ่ม Button1 และ ครั้งแรกที่ load pageนี้ให้แสดง ข้อความ “Enter some text and press button” ที่ label
ซึ่งเราจะสามารถ ใส่ code ได้ดังนี้
  1. ..  
  2. using System.Web.UI.WebControls;  
  3. using System.Web.UI.WebControls.WebParts;  
  4. using System.Web.UI.HtmlControls;  
  5.   
  6. public partial class _Default : System.Web.UI.Page  
  7. {  
  8.     protected void Page_Load(object sender, EventArgs e)  
  9.     {  
  10.         if (Page.IsPostBack)  
  11.         {  
  12.             Label1.Text = "You enter " + TextBox1.Text;  
  13.         }  
  14.         else  
  15.         {  
  16.             Label1.Text = "You enter some text and press command ! ";  
  17.         }  
  18.     }  
  19.   
  20. }  
สังเกตที่ Page.IsPostBack property นะครับ เราใช้ คุณสมบัตินี้เป็นcondition สำหรับแยกการทำงานระหว่าง การ load ครั้งแรก ( กรณีที่IsPostBack เป็น เท็จ หรือ false ) และการ PostBack ซึ่งเกิดจากการ ที่เราclick ปุ่ม ( กรณีที่ IsPostBack เป็นจริง หรือ true ) ซึ่งเมื่อทำการ runcode นี้ก็จะได้ผลตามต้องการ
How it work
การทำงานก็อย่างที่ได้กล่าวไปแล้ว นะครับ ว่า IsPostBackจะเป็นตัวที่ช่วยให้เราจำแนกได้ว่า ใน event Page_load ขณะนั้นเป็น การPostBack หรือไม่ นั้นก็หมายถึงว่า User ได้มีการ Click ปุ่ม หรือไม่ หากเป็นการ Click ปุ่ม IsPostBack เป็นจริง หากเป็นการ load Pageนั้นครั้งแรก IsPostBack ก็จะเป็น false นั่นเอง
สิ่งที่ต้อง เข้าใจและจดจำไว้อีก ประเด็นหนึ่งก็คือ postback นั้นออกแบบมาใช้กับ การทำงาน Page ใด ๆ หรือ Single page นะครับ หมายความว่าIsPostBack จะถูก Reset ใหม่เมื่อ เราเรียกไปยัง Page อื่น หรือจาก Pageหนึ่งไปยังอีก Page หนึ่ง เราสามารถสรุปได้เป็นตารางดังนี้
postback2
ครับ ผมคิดว่า เรื่องนี้ เป็น Basic ที่เราจะต้องทำความเข้าใจให้ดีก่อนที่เราจะสร้าง application จริงนะครับ เพราะเราจะต้องใช้มันไปตลอด จริงแล้วมันคงยังมีคำถามค้างคาใจอยู่อีก ว่าเราสามารถจะทำการpostback ระหว่าง page ได้หรือไม่ ตอบว่าได้ครับ แล้วผมจะเอามาพูดต่อไปนะครับ 

No comments:

Post a Comment