请问一下各位,我在母版页中放了一个menu控件和一个label控件,我想点击菜单的某一项,把这一项的文本显示在label中,这么写怎么不对,只有点击菜单第一项是能获得文本,点击子菜单项和其它的菜单项,都得不到菜单项的文本,请各位帮忙 protected void Menu1_MenuItemClick(object sender, MenuEventArgs e) 

        
        Label1.Text = e.Item.Text; 

解决方案 »

  1.   

    我刚试了下,一切正常,并没有LZ说的情况,你把menu控件的html代码贴出来看看
      

  2.   

    <asp:Menu ID="Menu1" runat="server" Font-Size="Small" ForeColor="White" Height="149px" Width="69px" BackColor="#FF8080" Font-Bold="True" OnMenuItemClick="Menu1_MenuItemClick">
                            <Items>
                                <asp:MenuItem Text="设备管理" Value="设备管理">
                                    <asp:MenuItem Text="设备信息" Value="设备信息"              NavigateUrl="~/browpage/equipmentinfo.aspx"></asp:MenuItem>
                                    <asp:MenuItem Text="————" Value="————"></asp:MenuItem>
                                    <asp:MenuItem Text="设备口令" Value="设备口令" NavigateUrl="~/browpage/equipmentpass.aspx"></asp:MenuItem>
                                    <asp:MenuItem Text="————" Value="————"></asp:MenuItem>
                                    <asp:MenuItem Text="设备购置" Value="设备购置" NavigateUrl="~/browpage/equipmentbuy.aspx"></asp:MenuItem>
                                    <asp:MenuItem Text="————" Value="————"></asp:MenuItem>
                                    <asp:MenuItem Text="设备维修" Value="设备维修" NavigateUrl="~/browpage/EquipmentFault.aspx"></asp:MenuItem>
                                    <asp:MenuItem Text="————" Value="————"></asp:MenuItem>
                                    <asp:MenuItem Text="设备清理" Value="设备清理" NavigateUrl="~/browpage/EquipmentCleanUp.aspx"></asp:MenuItem>
                                </asp:MenuItem>
                                <asp:MenuItem Text="IP地址信息" Value="IP地址信息" NavigateUrl="~/browpage/EquipmentIP.aspx">
                                </asp:MenuItem>
                            </Items>
                            <StaticMenuStyle BackColor="Transparent" />
                            <StaticMenuItemStyle BackColor="Transparent" ForeColor="White" Font-Bold="True" />
                            <DynamicHoverStyle BackColor="#4A4A4A" ForeColor="#FEBD00" Font-Bold="True" />
                            <StaticSelectedStyle BackColor="Transparent" ForeColor="#FEBD00" />
                            <StaticHoverStyle BackColor="Transparent" BorderColor="#FF8080" ForeColor="#FFCD00" />
    这是menu控件的html代码,请各位帮帮忙看看,是不是哪里有问题,我怎么就是取不到菜单项的文本,谢谢!!
                            <DynamicMenuStyle BackColor="Transparent" />
                            <DynamicSelectedStyle ForeColor="White" />
                            <DynamicMenuItemStyle BackColor="#4A4A4A" ForeColor="White" Font-Bold="True" />
                        </asp:Menu>    
      

  3.   

    这是因为你给menuItem的NavigateUrl属性设置了url地址,这样每当你点击一个菜单项时就会打开而页面,而无法触发服务器端事件。你可以尝试把NavigateUrl属性去掉,然后再点击菜单项,看看是否是你需要的效果
      

  4.   

    谢谢你,fest,那我在打开一个页面的同时,想获取点击item的文本内容,应该怎么实现!非常感谢你的帮忙!!
      

  5.   

    如果是只要获取选中的文本,可以在NavigateUrl属性的后面添加要参数,如:
    <asp:MenuItem   Text="设备维修"   Value="设备维修"   NavigateUrl="~/browpage/EquipmentFault.aspx?menuText='设备维修'"> </asp:MenuItem>
    然后在服务器端获取参数menuText
      

  6.   

    再次谢谢你,fest :不过用你提供的方法好像也没办法实现,因为在实现链接到一个新页面时,就根本不触发服务器端的任何事件,所以也无法取的menuText参数,不知有没有其它的方法?谢谢!!!
      

  7.   


        protected void Menu1_MenuItemClick(object sender, MenuEventArgs e)
        {
            Label1.Text = Menu1.SelectedItem.Value;
        }
      

  8.   

    刚没看懂LZ的意思.
    其实8楼已经提供方法.
    你在母版页PageLoad中再增加
    if(Request.QueryString["menuText"] != null)
     Label1.Text=Server.UrlDecode(Request.QueryString["menuText"].ToString());
      

  9.   

    如果一定要实现页面的回发那就不要设置NavigateUrl属性,而是将url地址保存到value属性中,如下:
    <asp:MenuItem   Text="IP地址信息"   Value="~/browpage/EquipmentIP.aspx"> 然后在响应方法中实现如下代码:    protected void Menu1_MenuItemClick(object sender, MenuEventArgs e)
        {
            MenuItem selectMenu = (MenuItem)e.Item;        lblMenu.Text = selectMenu.Text;
            this.Response.Write(string.Format("<script language='javascript'>window.open('{0}')</script>", selectMenu.Value));
        }