如何在 ASP 菜单项中设置 onClick 事件



我有一个动态生成的菜单(C#),如下所示:

MenuItem(string text, string value, string imageUrl, string navigateUrl, string target)
MenuItem AdminLevel1 = new MenuItem("Admin", "Admin");
MenuItem AdminPedidosRegisto = new MenuItem("Questions", "AdminQ");
NavigationMenu.Items.Add(new MenuItem("Messages Received", "AdminMessagesR", "", "./Admin/Messages.ascx", "ContainerIframe"));
AdminPedidosRegisto.ChildItems.Add(new MenuItem("Pending", "AdminPending", "", "./Admin/Pedidos.ascx", "ContainerIframe"));`

其中ContainerIframe是 iframe 的 ID,NavigationMenu是 (asp:Menu) 的 ID。

我想设置一些JavaScript,当我点击一个MenuItem时要执行。

有办法吗?

尝试将以下代码放在.aspx页面的 head 标签中:

   <script type="text/javascript"> window.onload = function(){
    var menuTable = document.getElementById("<%=Menu1.ClientID%>");  //specify your menu id instead of Menu1 var menuLinks = menuTable.getElementsByTagName("a");
        for(i=0;i<menuLinks.length;i++)
        {
            menuLinks[i].onclick = function(){return confirm("u sure to postback?");}
        }
        setOnClickForNextLevelMenuItems(menuTable.nextSibling); } function setOnClickForNextLevelMenuItems(currentMenuItemsContainer){
        var id = currentMenuItemsContainer.id;
        var len = id.length;
        if(id != null && typeof(id) != "undefined" && id.substring(0,4) == "Menu" && id.substring(parseInt(len)-5,parseInt(len)) == "Items")
        {
            var subMenuLinks = currentMenuItemsContainer.getElementsByTagName("a");
            for(i=0;i<subMenuLinks.length;i++)
            {
                subMenuLinks[i].onclick = function(){return confirm("u sure to postback?");}
            }
            setOnClickForNextLevelMenuItems(currentMenuItemsContainer.nextSibling);
        } } </script>

请注意,您无需在代码隐藏文件中编写任何代码,此解决方案即可正常工作。我已经在IE7和FF2.0中测试了代码

希望它对你有用。

干杯!!

AdminLevel1.NavigateUrl = "javascript:callSomeFunction();";

感谢@Manibhadra(这对于父项和子项来说已经足够了)

window.onload = function ()
{
    var menuTable = document.getElementById("<%=NavigationMenu.ClientID%>");
    var menuLinks = menuTable.getElementsByTagName("a");
    for (i = 0; i < menuLinks.length; i++)
    {
        menuLinks[i].onclick = function () { setInnerHTML('ContainerTittle', this.innerHTML); }
    }
}

Hahns 的回答似乎使所有项目都相同。

我使用以下方法:

  1. 使菜单项不可选择,因此不会回发
  2. 在适当位置添加以下代码:

Page.ClientScript.RegisterStartupScript(typeof(Page), "123", string.Format("$('#MenuDiv').find('a').filter(':contains("{0}")').css('cursor', 'pointer').click(function(){{ {1} }});", Title, Script), true);

哪里:
"123"是脚本
的唯一键MenuDiv 是您的菜单客户端 ID
标题是您分配给菜单项
的文本脚本是你想要运行的JavaScript。

相关内容

  • 没有找到相关文章

最新更新