2009-06-08 3 views
4

asp 사용자 컨트롤에 jquery가로드되지 않는 문제가 있습니다.Jquery 사용자 정의 컨트롤

확인란을 클릭하면 click 이벤트를 추가하기 만하면됩니다.

Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender 
     ScriptManager.RegisterClientScriptInclude(Me, Me.GetType, "CheckboxdropdownScript", ResolveUrl("~/Scripts/CheckBoxDropDown.js")) 
End Sub 

스크립트가로드 괜찮하지만, jQuery를의 사용이 정의되지 않은 반환 :

여기에 사전 이벤트를 렌더링

$(document).ready(function() { 
    var arr = jQuery(":checkbox[id*='drpAccountType']"); 
    for (i = 0; i < arr.length; i += 1) { 
     $("#" + arr[i].id).click(function() { alert(this.id) }); 
    } 
}); 
if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded(); 

사용자 정의 컨트롤 내 자바 스크립트 파일입니다. 그런 다음 페이지가로드 될 때만 firebug에서 commande 행에 대해 동일한 코드를 실행할 수 있습니다. jquery 라이브러리가 마스터 페이지에로드됩니다.

asp 사용자 컨트롤 내에서 jquery를 사용할 때마다 나는 항상 문제를 발견하고 항상 작동하도록 해킹해야합니다. 내가 stackoverflow에있는 모든 항목을 시도하지만 일반적인 해결책으로 하나를 찾지 못했습니다.

누구나 마스터 페이지에서 jquery를 사용하는 간단한 해결책을 찾았습니까? asp.net에서 사용자 컨트롤 누군가가 이러한 중요한 정보를 공유 할 수 있다면 감사하겠습니다.

관리자가 응용 프로그램에서 jquery를 삭제하려고합니다. 사용자 컨트롤을 사용하기위한 해결 방법을 찾기 위해 항상 시간을 허비하고 있습니다.

제발 도와주세요, 나는 jquery를 좋아하고 정말로 클라이언트 스크립트로 사용하고 싶습니다.

안부

답변

5

이 스크립트는 jQuery 라이브러리 전에 페이지에 삽입하기 할 수있다. (페이지의 HTML 출력을 확인하여 확인할 수 있습니다.)

스크립트 파일이 JS 인라인을 실행하고 특히 JS가 다른 라이브러리에 의존하는 경우 RegisterClientScriptInclude 대신 RegisterStartupScript을 사용하는 것이 가장 안전합니다. this overload of RegisterStartupScript을 사용하면 동일한 외부 JS 파일에 대한 참조를 생성 할 수 있으며 올바른 위치에서 실행됩니다.

다른 방법으로는 Page_Load 또는 Page_Init에 스크립트를 등록하는 대신 사용자 컨트롤의 ScriptManagerProxy<asp:ScriptReference/> 태그를 사용할 수 있습니다. 내 경험상, 그 스크립트는 마스터 페이지의 스크립트 뒤에 추가됩니다.

+0

나를 이길;) –

+0

문자열 작성기를 사용하여 스크립트를 구성해야하기 때문에 RegisterStartupScript를 피할 수 있습니다. 스크립트가 크면 유지 관리하기가 어렵습니다. – Youssef

+1

http://msdn.microsoft.com/en-us/library/z9h4dk8y.aspx에서 'RegisterStartupScript'의 오버로드를 사용하여 JS 파일에 대한 참조를 생성 할 수 있어야합니다. 인라인 스크립트 일 필요는 없습니다! –

1

이 직접 대답은 정확히 아니지만 여기에 도움이 될 몇 가지 jQuery를 ASP.net 컨트롤은 다음과 같습니다. (콜백에 대한 비트를 찾으)

http://clipperhouse.com/jQuery/

또한, 수도 단순히 모든 체크 박스에 클래스 이름을 지정하고이를 선택 자로 사용하는 경우 "for"루프가 필요하지 않습니다.