Welcome Guest Search | Active Topics | Log In | Register

ASP.Net กับ JavaScript Options · View
karakasung
#1 Posted : Monday, July 05, 2010 5:54:11 PM
Rank: มือพระกาฬ

Groups: Member

Joined: 4/28/2009
Posts: 55
Location: CRU ChiangRai
การรัน JavaScript ใน asp.net นั้น

เป็นเพราะอะไร เวลาที่รีเทิร์นค่ามาแล้ว

ทำให้ ฟอร์มของ ASP.Net มันเปลี่ยนไป

วานผู้รู้ช่วยตอบให้หน่อยครับ
paedotnet
#2 Posted : Tuesday, July 06, 2010 10:18:44 AM
Rank: ฝ่ามืออรหัน
มงกุฎทอง: ขอบคุณมากครับ สำหรับการแบ่งปันความรู้ให้กับสังคม
Groups: Administration

Joined: 12/6/2007
Posts: 584

มันทำให้ form เปลี่ยนไปยังไงเหรอครับ ซึ่งผมยังไม่ค่อยเข้าใจคำถามเท่าไหร่นะครับเพราะผมลองสร้างและ
ทดสอบให้ javascript return ค่าดู form มันก็ไม่เปลี่ยนแปลงนะครับ
แต่ยังไงก็ลองมาดูจุดนี้กันก่อนคือเรืองของการ postback ซึ่งถ้าหน้า page นั้นมี web server control ที่มีการ Postback เช่น Button,LinkButton
จะทำให้ไฟล์ของหน้า page นั้นๆเมื่อเปิดดู Source (หลังจากรัน page นั้น) จะมีการสร้าง function ขึ้นมาตัวนึงชื่อ
__doPostBack ดังนี้
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}

และคำสั่ง เรียก function  ของ Buttonมีดังนี้
<input type="submit" name="Button1" value="Test" onclick="javascript:__doPostBack('Test','')" id="Button1" />
ซึ่งตรงคำสั่งสำหรับเรียก function นี้จะเป็นการเรียกfunction ของ javascript (__doPostBack) ขึ้นมาทำให้หน้า Page เกิดการ Postback ขึ้นนั่นหมายถึงว่า
ถ้ามีคำสั่งให้หน้า page แปลงแปลงอะไรก็จะเกิดขึ้นหลัง postback เช่นถ้าต้องการรับค่าเราก็สามารถ check ค่า
ใน pageload หลัง postback ได้ดังนี้
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            string returnValueArg = Request["__EVENTARGUMENT"];
            if (returnValueArg != null)
            {
                //คำสั่งต่างๆหลังจากรับค่าเข้ามาแล้ว
            }
        }
    }

 


 

E-Mail / MSN : paedotnet@hotmail.com
karakasung
#3 Posted : Tuesday, July 06, 2010 2:32:36 PM
Rank: มือพระกาฬ

Groups: Member

Joined: 4/28/2009
Posts: 55
Location: CRU ChiangRai
ขอบคุณครับที่ตอบกระทู้

ผมมีข้อสงสัยอย่างนึงว่า

หากจะเขียน javascript ใน source code ของ asp นั้น การทำงานจะทำงานให้หน้าเดียวกันนั้น

แต่หากไปเขียนในส่วนที่เป็น .cs นั้น มีวิธีไหนที่สามารถทำให้ทำงานในหน้านั้นๆ ไม่ต้องเด้งไปหน้าขาวๆก่อนด้วยครับ

######ตัวอย่าง source code ของ asp ในหน้า webpage

<body bgcolor="#66ccff">

<form id="form1" runat="server" >

<script language="javascript">
function AlertTest()
{
alert("Test ");
}
</script><p>
<table background-color: #66CCFF;"  title="Test">
<input type="button" name="btnLogout" id="btnLogout" value="Logout" onclick="JavaScript:AlertTest();"/>
</table>

หากเป็นแบบนี้จะสามารถทำงานในเพจๆเดียวได้

แต่หากเขียนในหน้า C# code(*.cs) ว่า

Response.Write("<script language='javascript'>);

Response.Write("alert('Test');");

Response.Write(</script>);


จะพบกว่า มันจะเด้งไปอีกหน้านึง

ช่วยแนะนำวิธีการเรียกใช้ javascript โดยการเขียนโค็ด แล้วไม่ให้เด้งไปหน้าอื่นด้วยครับ





paedotnet
#4 Posted : Wednesday, July 07, 2010 12:13:58 AM
Rank: ฝ่ามืออรหัน
มงกุฎทอง: ขอบคุณมากครับ สำหรับการแบ่งปันความรู้ให้กับสังคม
Groups: Administration

Joined: 12/6/2007
Posts: 584
ลองศึกษาจากบทความที่ผมเขียนครับ น่าจะตอบโจทย์ได้ไม่มากก็น้อย
http://www.codetoday.net/default.aspx?g=posts&m=6758
E-Mail / MSN : paedotnet@hotmail.com
karakasung
#5 Posted : Wednesday, July 07, 2010 8:58:23 AM
Rank: มือพระกาฬ

Groups: Member

Joined: 4/28/2009
Posts: 55
Location: CRU ChiangRai
ขอบคุณครับ สำหรับหลักการดีๆ

คือว่า ถ้าเป็นการทำงานแบบว่า ทำงานในหน้าของ C# ไปเรื่อยๆ แล้วหากว่ามันติด Error แล้วให้เด้งเป็น javascript

ซึ่งตรงนี้แหละ ที่มันจะเด้งหน้าใหม่ จะมีอีเวนท์ไหนที่แบบว่า คลิก Button ปุ๊บ

มันจะทำงานในส่วนของ C# (หน้า .cs) ไป แล้วพอมันเกิด Error มันก็จะเด้งเป็น JavaScript แบบนี้น่ะครับ
Users browsing this topic
Guest
Forum Jump  
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

Creative Commons License
CodeToday.NET is licensed under a Creative Commons Attribution-Noncommercial 3.0 Thailand License.
Based on a work at www.CodeToday.net.