2015-01-24 4 views
0

동적으로 메뉴 항목을 작성하고 그 중 하나에서 javascript 함수를 호출해야합니다. 뒤에MenuItem은 javascript 함수를 호출합니다.

function popWin(url) { 
     var winHandle = window.open(url, '_blank', 'width=1000,height=700,resizable=yes,top=5,left=5,scrollbars=yes,status=yes'); 
    } 

<asp:Menu ID="Menu1" runat="server" StaticDisplayLevels="8" RenderingMode="List" OnMenuItemClick="Menu1_MenuItemClick" CssClass="menu" Width="150px"> 
</asp:Menu> 

코드 :

 string url = "/somepage.aspx"; 
     MenuItem child = new MenuItem(); 
     child.Text = "Some Text"; 
     child.NavigateUrl = "javascript:popWin('" + url + "');"; 
     //child.NavigateUrl = "javascript:window.open('somepage.aspx');"; 
     Menu1.Items[1].ChildItems.Add(child); 

그냥 자바 스크립트 함수를 호출하는 몇 가지 문제가.
window.open은 작동하지만 추가 페이지가 열리 며 창 열기에 대한 더 많은 제어가 필요합니다.

이런 식으로해야하는 이유는 다른 페이지를로드하는 페이지에 iFrame이 있기 때문입니다. RegisterStartupScript가 Menu1_MenuItemClick 이벤트에서 사용되고 있지만 iFrame의 소스가 새로 고쳐집니다.

의견을 보내 주셔서 감사합니다.

UPDATE

이의 다른 경로를 이동하려고하지만, 바로 작동하지 :

 child = new MenuItem(); 
     string win = "/SomePage.aspx"; 
     string script = "popWin(" + win + ");"; 
     string text = "<span style='cursor:pointer;' onclick='" + script + "'>Some Text</span>";   
     child.Text = text;    
     child.Selectable = false; 
     Menu1.Items[1].ChildItems.Add(child); 

답변

0

이 문제에 돌아 오는하고 onclick 이벤트로 HTML에 span 태그를 테스트 한 후, 문제는 단순히 약간의 구문이었습니다.

 child = new MenuItem(); 
     string win = "/SomePage.aspx"; 
     string script = "popWin('" + win + "');"; 
     string text = "<span style=\"cursor:pointer;\" onclick=\"" + script + "\">Some Text</span>"; 
     //Below is how it should render 
     //<span style="cursor:pointer;" onclick="popWin('/SomePage.aspx');">Some Text</span> 
     child.Text = text; 
     child.Selectable = false; 
     Menu1.Items[1].ChildItems.Add(child); 

생각해 본 사람은 다른 사람이 같은 문제에 부딪 힐 경우에 대비해 게시 할 것입니다.

관련 문제