- คือจะกำหนด ค่าใส่ session
- หลังจากนั้นทำการเรียก page อื่น ซึ่งใน page อื่นต้องได้ค่า ของ session
- ทำไมเราเรียกใช้ function javascript ผ่าน property OnClientClick แล้วค่าที่ได้ครั้งแรกจะตรง
- แต่พอครั้งต่อไป ไม่ตรงต้องรีเฟรช ถึงจะได้ค่าล่าสุดงง
- หรือ ลองเขียนโค้ดฝั่ง server กำหนดค่าให้ session ที่ aspx อาการก็เหมือนกับเรียกใช้ OnClientClick คือ ครั้งแรก ถูกแต่ครั้งต่อไป ไม่ถูกต้อง ต้องรีเฟรชถึงจะใช่
Method 1
- ส่งค่าผ่านทาง querystring สิ
- ซึ่งเราไม่ต้องการแบบนี้หว่า
Method 2
- หรือ ถ้าต้องส่งผ่าน session จริงก็เรียก client script ใน code behind click event เลย ซึ่ง OnClientClick property เราไม่ต้องใส่อาไรนะ
- Page.Regis... จะเก่าแหละ เค้าแนะนำให้ใช้ ClientScript.Regis... แทน
- สรุปใช้แบบใหนก็ได้มั้ง เพราะ ทดสอบดู การ get ค่า session จากหน้าที่ถูกเรียกจะได้ค่าถูกต้อง
Page.ClientScript.RegisterStartupScript( Page.GetType(), null, "<script>ShowMsgTest();</script>" ,false);
มี 4 พารามิเตอร์
type ก็คือ ที่ register script เรา( แต่ลองใช้ type อย่างอื่นมันก็ได้ ????)
key ก็คือ keyสำหรับ script ไม่ใช้ก็ใส่ null
script คือ script เราครับ
addScriptTag ถ้าเป็น true ก็ไม่ต้องใส่ <script></<script> ครอบใน Script เราครับ
Page .ClientScript .RegisterStartupScript( Page.GetType(), null, "ShowMsgTest();" ,true);
//---------------
หากไม่อยาก Include Javascript หน้า html ลองใช้ ตอน โหลดก็ได้ครับ
Page.ClientScript.RegisterClientScriptInclude( Page.GetType(), null,./js/JScript.js" );
แต่มันไม่ยอมทำงานถ้า มันอยู่ใน IsPostBack ครับ ????
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack) {
Page.ClientScript.RegisterClientScriptInclude( Page.GetType(), null,"./js/JScript.js" );
}
}
//------------------
ปล. แต่ก็ระวังเรื่องการใช้ Script ชื่อเดียวกัน ใน page มันจะแสดงได้แค่อันเดียวครับ เช่น
protected void Button2_Click( object sender, EventArgs e ) {
Page.ClientScript.RegisterStartupScript( this.GetType() , null, "<script>ShowMsgTest();</script>", false );
Page.ClientScript.RegisterStartupScript( this.GetType(), null, "<script>ShowMsgTest();</script>", false );
}
จะแสดง แค่ 1 MessageBox ครับ ซึ่งถ้าอยอากให้แสดง 2 อันเลยต้องใส่ key ให้มันครับ
Page.ClientScript.RegisterStartupScript( this.GetType() , "msg1", "<script>ShowMsgTest();</script>", false );
Page.ClientScript.RegisterStartupScript( this.GetType(), "msg2", "<script>ShowMsgTest();</script>", false );
เราอาจตรวจสอบว่า script เราเคย register ไปแล้วยังได้จาก Page.ClientScript.IsStartupScriptRegiste
หรือ
ScriptManager.RegisterStartupScript(Page, typeof(Page), "key1", "window.open('http://www.yahoo.com')", true);
อ้างอิง
- http://www.experts-exchange.com/.../Q_22103475.html
- http://www.velocityreviews.com/...in-the-aspxcs-.html
- http://greatfriends.biz/webboards/msg.asp?id=32671
No comments:
Post a Comment