MenuItem调用javascript函数

时间:2015-01-24 19:13:00

标签: c# asp.net 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);

调用javascript函数时遇到一些麻烦 window.open会起作用,但会打开一个额外的页面,我需要更多地控制窗口的打开。

这需要以这种方式完成的原因是页面上有一个加载不同页面的iFrame。 RegisterStartupScript正在Menu1_MenuItemClick事件中使用,但它正在刷新iFrame的源。

感谢您的任何建议。

更新

试图走另一条路线但却行不通:

        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);

1 个答案:

答案 0 :(得分: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);

以为我会发布这个以防万一其他人遇到同样的问题。