2013-09-06 4 views
0

aspx 페이지 (C#)에서 javascript 함수를 호출해야합니다. 이것은 쇼 기능은 aspx 파일에 위치하고, 그것은 몇 가지 그림을 그립니다. 이 함수는 버튼 누름에 의해 호출됩니다. 숫자의 매개 변수는 mssql 데이터베이스의 일부 색인으로 사용됩니다.aspx 페이지에서 호출 된 캔버스에서 그리기위한 JavaScript 함수가 오류를 발생합니다.

ClientScriptManager cs = Page.ClientScript; 
cs.RegisterStartupScript(this.GetType(), "myScript", "<script language='javascript'>htm("+param+")</script>"); 

문제는 내가 aspx 페이지의 섹션에 자바 스크립트 함수의 HTM을 넣어 있다면, 나는 "HTM 기능이 정의되어 있지 않은"얻을 것입니다, 경우에 내가있는 경우 : 자바 스크립트 코드는 다음 명령으로 호출 html 코드의 끝 부분에 javascript를 넣으면 캔버스가 아직로드되지 않았으므로 캔버스 컨텍스트 (null 객체)를 가져 오는 중 오류가 발생합니다. 문제의 부분적인 해결책은 javacript 함수를 window.onload에 할당하는 것입니다. 그 이유는 버튼을 누른 후 을 그려야하기 때문에 필요한 솔루션이 아니기 때문입니다. 서버 측 코드에서 정의 할 수 있습니다 경우

+0

왜 자바 스크립트 함수를 호출하지 않습니다 서버 측에 대한 호출해야하는 경우

UPDATE, 당신은 같은 시간 제한을 사용할 수 있습니다, 정의 기능 htm까지 기다릴 필요 onclick '또는'OnClientClick 'on button –

+0

이 함수는 실제로 버튼의 "onclick"액션에서 실행됩니다. OnClientClick은 데이터베이스에서 가져온 데이터를 필요로하기 때문에 "OnClientClick"액션을 사용하지 않습니다. OnClientClick은 서버 측 데이터와 함께 작동하는 코드를 실행하는 데 적합하지 않습니다. –

+0

'param'은 어떻게 보입니까, 어떤 데이터가 있습니까? –

답변

0

당신은 서버 측 데이터와 OnClientClick 사용할 수 있습니다

이 버튼을 클릭
myButton.OnClientClick = "htm(" + param + "); return false"; 

- 그것은 어떤 포스트 백없이 순수 cleint 쪽 클릭의 원인이됩니다.

cs.RegisterStartupScript(this.GetType(), "myScript", "(function htmCaller() { if (typeof (htm) == 'undefined') { setTimeout(htmCaller, 500) } else { htm("+param+") })(); }", true); 
+0

이 코드를 CodeBehind의 _Button1.Click_ event에 넣으면 _PageLoad_ 섹션에서 작동합니다. 어쨌든 작동하지 않습니다. 미안 해요, 제가 관리 할 수 ​​없어요. –

+0

'param'을 얻을 때마다 위 코드를 삽입 할 수 있습니다. 그리고 나서 OnClientClick은 순전히 클라이언트 클릭이므로 모든 클라이언트 측 객체가 생성 된 후에 * * 페이지가로드 된 후에 호출됩니다. –

+0

문제는 Button1.Click에 _OnClientClick_을 넣었습니다 (동일한 버튼, onClientClick이 실행 됨), myButton.OnClientClick = "alert ('hey');와 같이 경고가 발생하지 않습니다."; –

관련 문제