Narisa.com: จะเรียกเมธอดใน Code Behind จาก Javascript - Narisa.com

Jump to content

  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

จะเรียกเมธอดใน Code Behind จาก Javascript Rate Topic: -----

#1 User is offline   DotNetCrazy 

  • Junior Member
  • Pip
  • Group: Members
  • Posts: 52
  • Joined: 06-February 07

Posted 09 July 2007 - 03:35 PM

จะเรียกเมธอดใน Code Behind จาก Javascript ได้อย่างไร ถ้าไมได้ใช้ AJAX (เห็นว่า xmlHttprequest) เพราะโปรเจคผมเขาห้ามใช้ AJAX
0

#2 User is offline   raywat 

  • Member
  • PipPip
  • Group: Members
  • Posts: 142
  • Joined: 12-September 06

Posted 09 July 2007 - 05:48 PM

ไม่แน่ใจนะครับ
ใช้ iframe และส่งค่าผ่าน src
ส่วน server ก็รับค่าแล้วไปเรียก code Behind
น่าจะพอเป็นแนวได้นะครับ
0

#3 User is offline   spncc 

  • Newbie
  • Pip
  • Group: Members
  • Posts: 29
  • Joined: 10-July 07

  Posted 10 July 2007 - 08:07 AM

โอ้ กำลังหา เหมือนกันเลยครับ โทษที่ไม่ได้เช็คกระทู้ดูก่อน ตั้งซ้ำกันจนได้ (ใกล้กันซะด้วยสิ :huh: )

ผมเจอที่นี่ครับ แต่ไม่เข้าใจ เพราะเขียน script ไม่เป็น

ถ้าเข้าใจแล้ว บอกด้วยนะครับ

http://www.velocityreviews.com/forums/t744...ltscriptgt.html
0

#4 User is offline   LuCisFero 

  • Member
  • PipPip
  • Group: Members
  • Posts: 322
  • Joined: 12-October 05

Posted 10 July 2007 - 10:21 AM

Quote


จาก url ข้างบน นี้ มันเป็นการเรียก method ของ Code Behind ด้วย Server Side Script นี่ครับ รู้สึกว่าจะยังไม่ตรงกับคำถาม

คิดว่าค่อนข้างยาก นะครับที่จะทำ Web Application แล้วไม่ต้องใช้ XmlHttpRequest protocal
เพราะถึงแม้ว่า ใน ASP.NET จะมี callback ก็ตาม แต่ก็ยังต้องพึ่ง protocal XmlHttp (protocal เดียวกับ XmlHttpRequest แต่ XmlHttp จะ work บน IE เท่านั้น) อยู่ดี

ตัวอย่าง call back http://dotnetjunkies.com/Tutorial/E80EC96F...30EECF13D7.dcik

นอกเหนือจากนั้น คงทำได้แค่ ให้ javascript สั่ง submit หรือส่งค่าไปให้ Server Side แบบตรง ๆ ด้วยการ load page นั้น ๆ แล้วล่ะครับ
0

#5 User is offline   spncc 

  • Newbie
  • Pip
  • Group: Members
  • Posts: 29
  • Joined: 10-July 07

  Posted 10 July 2007 - 02:47 PM

คุณ LuCisFero

ถ้าจะให้ script เรียก method ใน .cs เขียนยังไง ครับ

สมมุติ ผมมี myPage.aspx และก้อมี button 1 ปุ่ม ผมจะเขียน script ยังไงให้มันไปเรียก button_click ทำงานได้ครับ
<body onclick=myScript()>

myPage.aspx.cs
void button_click()
{
label1.text = "hello";
}
0

#6 User is offline   Interactive 

  • Junior Member
  • Pip
  • Group: Members
  • Posts: 83
  • Joined: 15-May 07

Posted 10 July 2007 - 04:27 PM

ติดเรื่อง นี้ อยู่ เหมือน กัน อะครับ ใคร เก่งๆๆ ช่วย อธิบายให้กะจ่าง ที่ ครับ หรือ มีแนว ทาง การ แก้ปัญหา แบบ ไหนบ้างครับ ถ้า ให้ ดี ขอ ตัวอย่างโค้ด ด้วย ได้ ไหมครับ
ขอบคุณผู้รู้อย่างสูง
0

#7 User is offline   Interactive 

  • Junior Member
  • Pip
  • Group: Members
  • Posts: 83
  • Joined: 15-May 07

Posted 10 July 2007 - 09:22 PM

ผม ใช้วิธีนี้ อ่ะครับ เขียนลงบน code Behind

Response.Write("<script> var answer1= confirm('Leave tizag.com?'); if (answer1){alert('Bye bye!')} else{test1(); }; </script>")

ในตรงนี้ มันโชว์ pop up ขึ้นมา แล้วครับ แต่เวลา เกิด ยกเลิก แล้ว ผมอยากให้มัน มาทำงาน ที่ sub test1 อะครับทำไงดี ผมงงตรง การเขียน สคริป นี้ แหละครับ ใช้ไม่ค่อยเป็น ช่วยที ครับ

Public Sub test1()
'Dim deltel As String
'deltel = "Delete from Customertel"
'deltel &= " where(Cus_Id='" & Session("userid") & "' and Cus_tel='" & Txtel.Text & "')"
'comm = New SqlCommand(deltel, conn)
'comm.ExecuteNonQuery()
'Txtel.Text = ""
ListBox1.Enabled = True
'Me.Addtel.Enabled = True
'Me.EditTel.Enabled = False
'Me.Deltel.Enabled = False
'isfind = True
'listel()
End Sub

This post has been edited by Interactive: 10 July 2007 - 09:23 PM

0

#8 User is offline   LuCisFero 

  • Member
  • PipPip
  • Group: Members
  • Posts: 322
  • Joined: 12-October 05

Posted 11 July 2007 - 09:46 AM

Default.aspx
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
	<title>Untitled Page</title>
</head>
<body>
	<form id="form1" runat="server">
	<div>
		<asp:Label ID="myLabel" runat="server" Text="Label"></asp:Label>
		<br />
		<asp:Button ID="myButton" runat="server" Text="Call" OnClick="myButton_Click" /></div>
	</form>
</body>
</html>


Default.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
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)
	{

	}
	protected void myButton_Click(object sender, EventArgs e)
	{
		MyClass myClass = new MyClass();
		myClass.UpdateLabel(myLabel);
	}
}


App_Code/MyClass.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// Summary description for MyClass
/// </summary>
public class MyClass
{
	public MyClass()
	{
		//
		// TODO: Add constructor logic here
		//
	}

	public void UpdateLabel( Label lbl)
	{
		lbl.Text = "Hello World!";
	}
}

0

#9 User is offline   NoooM 

  • Star
  • Group: Star
  • Posts: 292
  • Joined: 13-October 06

Posted 11 July 2007 - 11:15 AM

ผมดีใจครับที่คุณ LuCisFero อุตส่าห์ตอบคำถามให้แก่ผู้ถามทั้งหมด :D

แต่ผมขอเรียนผู้ถามทุกท่านว่า ก่อนที่จะถามคำถามเพิ่มเติมนั้นได้ดู ตัวอย่างใน
http://dotnetjunkies...30EECF13D7.dcik
ตามที่คุณ LuCisFero แนะนำไว้หรือยังครับ เพราะผมว่าในตัวอย่างนี้ได้อธิบายไว้อย่างดีอยู่แล้ว
0

#10 User is offline   spncc 

  • Newbie
  • Pip
  • Group: Members
  • Posts: 29
  • Joined: 10-July 07

  Posted 11 July 2007 - 01:11 PM

View PostNoooM, on Jul 11 2007, 11:15 AM, said:

แต่ผมขอเรียนผู้ถามทุกท่านว่า ก่อนที่จะถามคำถามเพิ่มเติมนั้นได้ดู ตัวอย่างใน
http://dotnetjunkies...30EECF13D7.dcik
ตามที่คุณ LuCisFero แนะนำไว้หรือยังครับ เพราะผมว่าในตัวอย่างนี้ได้อธิบายไว้อย่างดีอยู่แล้ว



ขอโทษครับ คุณ NoooM บังเอิญ ผมเข้าไปดูแล้ว มันเป็นการเรียก activate function ด้วย onclick ซึ่งยังไม่ใช่ที่ผมต้องการ
ที่ต้องการคือ ให้ script activate function ใน code behide โดยที่ไม่ผ่าน control ครับ

มันทำได้จริงๆ มั้ยครับ???
หรือต้องใช้ trick อื่นๆ ??? (แต่ผมว่ามันน่าจะได้ นะ)

คุณ LuCisFero ครับ
ขอบคุณ ที่แปะมาให้ดูอย่างละเอียด แต่นั่นเป็น html tag ที่ vs เค้า create ให้อยู่แล้วไม่ใช่หรือครับ แล้วถ้าไม่กด click ที่ myButton มันก้อจะไม่ทำงาน แต่ที่ผมอยากได้คือ ไม่กด button ก้อทำงานได้ครับ

ที่ผมต้องการทำจริงๆ ก้อคือ
1) เมื่อ user มีการปิด หน้าต่าง window โดยการ click X ที่ browser แล้ว จะให้ขึ้น confirm dialog ว่า ต้องการปิด จริงหรือเปล่า ถ้าใช่ก้อ ปิด ถ้าไม่ใช่ก้อไม่ปิด

2) ทีนี่ ถ้าไม่ปิด ก้อโอเค ไม่มีไรเกิดขึ้น แต่ถ้า user confirm ว่าจะปิด browser ต้องทำการ clear ค่าบางอย่างที่ database ก่อน ถึงจะเสร็จการทำงานทั้งหมด

ความจริงอยากทำต่อว่า
3) ถ้าเคลียร์ ค่าไม่ได้ ไม่ให้ปิด window ด้วยซ้ำ

แต่เอาข้อ 2 ให้ได้ก่อน แล้วค่อยไปข้อ 3 ครับ..

ตอนนี้ ข้อ 1 ความจริงก้อยังไม่ได้ แต่คิดว่า ไปขุดๆ เอาก้อคงได้เอง แต่ข้อ 2 เนี่ย หาที่ไหนก้อไม่เจอ ไม่รู้เค้าใช้วิธีไหนกันสิครับ ใครมีข้อเสนอแนะ ขอให้บอก บอกเป็น key word มาก้อได้ครับ จะไปหา ขุดๆ เอาเองก้อได้
แต่ถ้ามีวิธีทำก้อ ขอเลยง่ายดีครับ แหะ..

This post has been edited by spncc: 11 July 2007 - 01:25 PM

0

#11 User is offline   LuCisFero 

  • Member
  • PipPip
  • Group: Members
  • Posts: 322
  • Joined: 12-October 05

Posted 11 July 2007 - 03:01 PM

ขอบคุณนะครับ ที่คุณอุตส่าห์ทำให้ผมทราบว่า คุณต้องการอะไรกันแน่ ^_^

Quote

1) เมื่อ user มีการปิด หน้าต่าง window โดยการ click X ที่ browser แล้ว จะให้ขึ้น confirm dialog ว่า ต้องการปิด จริงหรือเปล่า ถ้าใช่ก้อ ปิด ถ้าไม่ใช่ก้อไม่ปิด


ถ้าไม่ใช้ Client Side Script เห็นทีว่าจะทำไม่ได้นะครับ เสียใจด้วยนะครับ
ถ้าใช้ Client Side Script (JavaScript/VBScript) มันจะมี method ชื่อ onbeforeunload (IE only) ครับเอาไว้เช็คได้ว่าจะปิดหรือไม่ปิด
window.onbeforeunload = function () {
			 dosomething();
	event.returnValue = 'Please click Cancel first !';
}

function dosomething() {
	window.onbeforeunload = function () { } // clear event 
	//call ajax or redirect to clear page etc.
	//หลังจากที่ ทำเสร็จก็ให้ สั่ง close window ในหน้านั้นซะ
	window.navigate('your url here');
}


หน้า clear
****ทำการ clear ค่าของคุณซะ แล้วก็เรียก javascript doclose() 

&lt;script>
function doclose() {
	alert( "HIT");
	window.opener=self; 
	window.open('','_parent',''); 
	window.close();
}
</script>
</head>

<body onload='doclose()'>
</body>


ซึ่งก็ทำได้แค่ว่า จะปิดหรือไม่ปิด เท่านั้นเองครับ ถ้า user ไม่ได้ click ปุ่ม Cancel แต่ click ปุ่ม OK แทน เราก็ไม่สามารถทำอะไรได้แล้วครับ
ที่เหลือ คุณก็แค่แจ้งให้ user ทราบว่า ต้องทำอะไรก่อนปิด คิดว่าคงทำได้แค่นี้นะครับ

Quote

2) ทีนี่ ถ้าไม่ปิด ก้อโอเค ไม่มีไรเกิดขึ้น แต่ถ้า user confirm ว่าจะปิด browser ต้องทำการ clear ค่าบางอย่างที่ database ก่อน ถึงจะเสร็จการทำงานทั้งหมด

ความจริงอยากทำต่อว่า
3) ถ้าเคลียร์ ค่าไม่ได้ ไม่ให้ปิด window ด้วยซ้ำ

ดูเงื่อนไขในข้อหนึ่งครับ

This post has been edited by LuCisFero: 11 July 2007 - 03:13 PM

0

#12 User is offline   DotNetCrazy 

  • Junior Member
  • Pip
  • Group: Members
  • Posts: 52
  • Joined: 06-February 07

Posted 11 July 2007 - 05:54 PM

View Postspncc, on Jul 11 2007, 01:11 PM, said:

View PostNoooM, on Jul 11 2007, 11:15 AM, said:

แต่ผมขอเรียนผู้ถามทุกท่านว่า ก่อนที่จะถามคำถามเพิ่มเติมนั้นได้ดู ตัวอย่างใน
http://dotnetjunkies...30EECF13D7.dcik
ตามที่คุณ LuCisFero แนะนำไว้หรือยังครับ เพราะผมว่าในตัวอย่างนี้ได้อธิบายไว้อย่างดีอยู่แล้ว



ขอโทษครับ คุณ NoooM บังเอิญ ผมเข้าไปดูแล้ว มันเป็นการเรียก activate function ด้วย onclick ซึ่งยังไม่ใช่ที่ผมต้องการ
ที่ต้องการคือ ให้ script activate function ใน code behide โดยที่ไม่ผ่าน control ครับ

มันทำได้จริงๆ มั้ยครับ???
หรือต้องใช้ trick อื่นๆ ??? (แต่ผมว่ามันน่าจะได้ นะ)

คุณ LuCisFero ครับ
ขอบคุณ ที่แปะมาให้ดูอย่างละเอียด แต่นั่นเป็น html tag ที่ vs เค้า create ให้อยู่แล้วไม่ใช่หรือครับ แล้วถ้าไม่กด click ที่ myButton มันก้อจะไม่ทำงาน แต่ที่ผมอยากได้คือ ไม่กด button ก้อทำงานได้ครับ

ที่ผมต้องการทำจริงๆ ก้อคือ
1) เมื่อ user มีการปิด หน้าต่าง window โดยการ click X ที่ browser แล้ว จะให้ขึ้น confirm dialog ว่า ต้องการปิด จริงหรือเปล่า ถ้าใช่ก้อ ปิด ถ้าไม่ใช่ก้อไม่ปิด

2) ทีนี่ ถ้าไม่ปิด ก้อโอเค ไม่มีไรเกิดขึ้น แต่ถ้า user confirm ว่าจะปิด browser ต้องทำการ clear ค่าบางอย่างที่ database ก่อน ถึงจะเสร็จการทำงานทั้งหมด

ความจริงอยากทำต่อว่า
3) ถ้าเคลียร์ ค่าไม่ได้ ไม่ให้ปิด window ด้วยซ้ำ

แต่เอาข้อ 2 ให้ได้ก่อน แล้วค่อยไปข้อ 3 ครับ..

ตอนนี้ ข้อ 1 ความจริงก้อยังไม่ได้ แต่คิดว่า ไปขุดๆ เอาก้อคงได้เอง แต่ข้อ 2 เนี่ย หาที่ไหนก้อไม่เจอ ไม่รู้เค้าใช้วิธีไหนกันสิครับ ใครมีข้อเสนอแนะ ขอให้บอก บอกเป็น key word มาก้อได้ครับ จะไปหา ขุดๆ เอาเองก้อได้
แต่ถ้ามีวิธีทำก้อ ขอเลยง่ายดีครับ แหะ..


ผมต้องการเหมือนคุณ Spncc ทุกประการเลยครับ :) แต่ยังหาวิธีไมได้เลย
0

#13 User is offline   spncc 

  • Newbie
  • Pip
  • Group: Members
  • Posts: 29
  • Joined: 10-July 07

  Posted 11 July 2007 - 09:30 PM

คุณ LuCisFero กรุณามาก ขอบคุณนะครับ

การเขียน script แบบนี้ ดู engineering ดีกว่าการใส่เป็น tag base เข้าไปใน control อีก..

แสดงว่าเราไม่อาจเรียก script แล้วส่งเหมือน post message ไปถึง server ได้เลยหรือครับ

หรือว่า เมื่อ user กด Yes เพื่อ confirm การ logoff ก้อให้ redirect ไปหน้า logoff แล้วให้หน้า logoff จัดการ เรื่อง code behide ตอน page load ได้มั้ย?
แล้วพอทำเสร็จแล้ว ก้อให้เรียก script เพื่อให้ auto close อีกที

เราจะเรียก redirect จาก script ได้ยังไง ครับ?
แล้วพอเปิดอีกหน้านึงแล้ว ให้ page มันโหลดก่อน แล้วค่อยปิดตามหลังทำได้มั้ยครับ ?

ไม่เคยเขียน script ก้อแบบนี้ล่ะครับ บางทีคำสั่งง่ายๆ ก้อไม่รู้ ยังไงช่วยด้วยนะครับ

เพิ่มเติมคุณ Interactive
ผมลองทำตามแล้วเห็นว่า script ที่คุณให้ response ออกไปนั้น มันจะทำงานหลังจาก control post message ออกไปแล้ว ซึ่งในกรณีของผมทำไม่ได้ เพราะว่า เมื่อ post message ออกไปแล้ว ทำให้งานในหน้านั้นๆ หายไป (stateless) ซึ่งถ้าคุณต้องการให้ script ทำงานหลังจาก post ถือว่าโอเค แต่ถ้าไม่ใช่ ต้องใส่ script ไว้ที่ หน้า aspx แหละครับ

แต่ถ้าคุณต้องการให้ post ก่อนถึงทำงานได้ น่าจะใช้ session variable ให้เป็นประโยชน์ นะครับ ทำงานง่ายกว่า script อีก เพราะ script ที่ต้องการนั้น แค่ให้ show dialog อย่างเดียวไม่ใช่หรือครับ
เปลี่ยนเป็นใช้ dialog เพื่อเก็บค่า session แล้วใส่ code behind ไว้ใน pageload แล้วใช้ session variable เป็นตัวแจงการทำงานอีกที..

ถ้าผมเข้าใจผิดก้อ ผ่านไปได้เลยครับ
0

#14 User is offline   Xtreme 

  • Star
  • Group: Star
  • Posts: 1108
  • Joined: 14-June 05

Posted 12 July 2007 - 12:05 PM

จากเท่าที่อ่านมาแล้ว พอสรุปได้ว่าจะทำอย่างไรให้ javascript ที่เป็นส่วนของ Client Script ไปเรียก Methode ที่สร้างขึ้นที่ Code Behind ค่าได้อะไรประมาณนี้หรือเปล่าครับ

ถ้าใช่ ก่อนอื่นต้องเข้าใจก่อนครับว่า javascript เป็นการทำงานของส่วน Client ส่วน Methode ที่ Code Behind นั้นเป็นการทำงานในส่วนของ Server ซึ่ง การจะให้ javascript สร้างมารถ เรียก methode ใน Server ได้ก็คงมีอยู่ทางเดียวคือการสร้าง xmlHttpRequest ขึ้นมาครับ

การทำ logout user เวลากด (X) ที่มุมขวา อาจทำได้โดยใช้ event window.onbeforeunload ช่วยเพื่อให้ทำการสร้าง xmlHttpRequests Call ไปยังส่วน Server เพื่อทำการ Clear ค่าใน Session ได้ครับ แต่!! event window.onbeforeunload จะรวมevent ทั้งการ leave ออกจากหน้าจอนั้นๆ ด้วยน่ะครับ
0

#15 User is offline   Rux 

  • Senior member
  • PipPipPip
  • Group: Members
  • Posts: 631
  • Joined: 10-July 04

Posted 12 July 2007 - 01:53 PM

ความต้องการของคุณ spncc ดูไม่สอดคล้องกับธรรมชาติของ Web Application เลย มันเลยมีข้อติดขัดอย่างนี้เอง เป็นผมคงชี้แจ้งให้ผู้ใช้ทำการ logout ก่อนออกจากระบบ (เราก็อาศัยจังหวะนี้เคลียร์ค่าต่างๆเลย) พอดีว่ารายละเอียดที่ให้มามันน้อยไปหน่อย ไม่รู้ว่าค่าที่ต้องการเคลียร์คืออะไรแล้วถ้าไม่เคลี่ยร์จะเกิดปัญหาอะไร และตอนไหน เคลียร์ตอนที่ผู้ใช้เข้ามาอีกครั้งได้หรือไม่ เพราะปกติตอนผู้ใช้เข้าระบบเรารู้ แต่ตอนเขาออกจากระบบเราทำอะไรไม่ได้(บางทีก็คลิกปิด บางทีก็คลิก logout บางทีก็เดินไปเฉยๆ บางทีออกเพราะไฟดับ ...)

พยายามทำให้ระบบของเรามันสอดคล้องกับธรรมชาติของสิ่งที่เราพึ่งพิง (Web) จะดีกว่านะครับ :rolleyes:

View Postspncc, on Jul 11 2007, 09:30 PM, said:

การเขียน script แบบนี้ ดู engineering ดีกว่าการใส่เป็น tag base เข้าไปใน control อีก..
ไม่เข้าใจว่าหมายถึงอะไร
0

Share this topic:


  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users