Archive

Posts Tagged ‘Postback’

The Postback Architecture , การทำงาน ของ 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 ได้ดังนี้

..
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
Label1.Text = “You enter ” + TextBox1.Text;
}
else
{
Label1.Text = “You enter some text and press command ! “;
}
}

}

สังเกตที่ Page.IsPostBack property นะครับ เราใช้ คุณสมบัตินี้เป็น condition สำหรับแยกการทำงานระหว่าง การ load ครั้งแรก ( กรณีที่ IsPostBack เป็น เท็จ หรือ false ) และการ PostBack ซึ่งเกิดจากการ ที่เรา click ปุ่ม ( กรณีที่ IsPostBack เป็นจริง หรือ true ) ซึ่งเมื่อทำการ run code นี้ก็จะได้ผลตามต้องการ

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 ได้หรือไม่ ตอบว่าได้ครับ แล้ว ผมจะเอามาพูดต่อไปนะครับ สำหรับ บทความนี้มันเป็นส่วนหนึ่งในหนังสือ เล่มนี้นะครับ Beginning ASP.NET 2.0 with C# ไปหาอ่านเพิ่มเติมกันได้ นะครับ

Categories: ASP.NET, Web form Tags: