2011-02-03 5 views
1

저는 SOF에서 약 5 가지 질문을 보았습니다. 실제로 이에 대한 유용한 대답을 찾지 못했습니다. 내 .ascx 컨트롤의 클라이언트 측 이벤트에서 자바 스크립트 함수를 호출하려면 어떻게해야합니까? 이런 식으로 일을 할 때 내가 다른 오류를 받고 있어요
.ascx의 javascript 함수

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UIMenu.ascx.cs" Inherits="controls_UIMenu" %> 

<script language="javascript" type="text/javascript"> 
    function insetItem(myMenu) 
    { 
     myMenu.setAttribute("class", "myClass"); 
    } 
</script> 

<asp:Menu ID="Menu1" runat="server" Font-Bold="True" Font-Size="Large" Height="50px" 
    Orientation="Horizontal" Target="_self" StaticMenuItemStyle-HorizontalPadding="10px" 
    OnMenuItemClick="insetItem(this)" StaticMenuItemStyle-BorderStyle="outset"> 
    <Items> 
    <asp:MenuItem NavigateUrl="~/Home.aspx" Target="_self" Text="Home" Value="Home"></asp:MenuItem> 
    <asp:MenuItem NavigateUrl="~/Loaner.aspx" Target="_self" Text="New" Value="New"></asp:MenuItem> 
    </Items> 
</asp:Menu> 

: 여기에 대부분의 답변이를 알려준 것을 제의 .ascx 파일은 ...입니다. "..... ascx에는"insetItem ""에 대한 정의가 포함되어 있지 않으며이 파일을 사용하는 다른 페이지에서는 더 이상 인식하지 못합니다. js를 실제 .aspx 페이지에 넣으려고하면 같은 정의 오류가 발생합니다.

방금 ​​jscript를 배우기 시작했습니다. 아직도 꽤 멍청한 놈입니다. 사용자가 메뉴 항목을 아래로 클릭 할 때 해당 항목의 borderstyle을 "inset"으로 변경하려고합니다. 나는 자바 스크립트에서 클릭 한 특정 항목에 대한 해당 속성을 변경하는 방법을 잘 모르겠습니다> _ <하지만 다른 질문입니다. 누구든지이 일을하는 데 나에게 올바른 길을 인도 할 수 있다면 놀라운 일이 될 것입니다. 감사!

답변

1

MenuItemClick는 acutally MenuEventHandler C# 이벤트 핸들러이다. OnClientClick을 찾고 있거나 단순히 onclick 속성을 사용한다고 생각합니다.

또한 라이브러리를 사용하고 있는지 잘 모르겠지만 jQuery, Prototype 또는 기타 항목을 사용하면 문서가로드 될 때이 이벤트 리스너를 눈에 띄지 않게 바인딩 할 수 있습니다.

+0

보세요. 그것은 항상 나를 망쳐 놓는다 .. 클라이언트와 서버 이벤트의 차이점을 알 수있는 방법이 있는가? 나는 새로운 jscript이고 심지어 jQuery 나 다른 것을 만지지도 못했지만 곧 나올 것 같습니다. –

+0

@Nicklamort - 행은 asp.net에 의해서만 흐려집니다. 모든 HTML 이벤트 속성 (onclick, onblur 등)은 javascript와 상호 작용합니다. ASP 웹 컨트롤을 사용할 때 일부 특성은 실제로 페이지 다시 게시를 호출하므로 서버에서 작업을 수행 할 수 있습니다. 나는 문서를 다음에주의 할 것이고, 일반적으로 asp.net은 클라이언트 속성을 Client (OnClientClick)라는 단어와 차별화한다. –

+0

오우 괜찮아 .. 그게 도움이된다. 그 남자 –

2

오류는 서버 쪽 이벤트 처리기 인 "OnMenuItemClick"에서 비롯됩니다. 그것은 서버 측에서 'insetItem'을 찾지 못하기 때문에 오류가 발생합니다.

당신은 메뉴 항목을 클릭하면, 당신은

<asp:MenuItem onclick="insetitem(this);returnfalse;" NavigateUrl="~/Loaner.aspx" Target="_self" Text="New" Value="New"></asp:MenuItem> 

return false; 때 메뉴 포스트 백을 수행에서 페이지를 방지 할 수 MenuItem 태그에 onclick="insetitem(this);return false;"을 넣을 수있을 동작이 발생 갖고 싶어 항목을 클릭합니다.

나는 이것을 시험하기 위해 아무것도 설정하지 않았다. 그것은 머리 꼭대기에서 모두 벗어났다. 그래서 그것을 작동 시키려면 약간 조정할 필요가있다. :)

+0

고맙습니다. ^^ –