none
Desabilitar opciones del menu

    Pregunta

  • Hola Chicos, tengo el siguiente inconveniente.

     

    Este tema ya lo he abordado varias veces por aqui.

     

    Fijense esta situacion. Tengo un menu de opciones, pero necesito desabilitar (hasta que el server me responda) todo el menu una vez que el usuario haya seleccionado una opcion. Creé una rutina en JavaScript y perfecto, cuando el user hace click en un item el menu se desabilita. Pero no entiendo porque si el control esta desabilitado los elementos hijo no, esto ocurre en tiempo de ejecucion. Acaso el menu con respecto a sus hijos no es un contenedor?

     

    Mas me confundo cuando en tiempo de diseño coloco enabled = false y entonces si me desabilita todo.

     

    Aqui les dejo a manera de ilustracion el codigo.

    *******************************************************

    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="menuPrincipal.aspx.vb" Inherits="menuPrincipal" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >

    <head runat="server">

    <title>Untitled Page</title>

    </head>

    <body>

    <form id="form1" runat="server">

    <div onmouseup='OffMenu()'>

    <asp:Menu ID="Menu1" runat="server" BackColor="#FFFBD6" DynamicHorizontalOffset="2"

    Font-Names="Verdana" Font-Size="0.8em" ForeColor="#990000" Orientation="Horizontal"

    StaticSubMenuIndent="10px">

    <StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />

    <DynamicHoverStyle BackColor="#990000" ForeColor="White" />

    <DynamicMenuStyle BackColor="#FFFBD6" />

    <StaticSelectedStyle BackColor="#FFCC66" />

    <DynamicSelectedStyle BackColor="#FFCC66" />

    <DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />

    <Items>

    <asp:MenuItem Text="Clientes" Value="Clientes">

    <asp:MenuItem Text="Incluir" Value="Incluir"></asp:MenuItem>

    <asp:MenuItem Text="Modificar" Value="Modificar"></asp:MenuItem>

    <asp:MenuItem Text="Eliminar" Value="Eliminar"></asp:MenuItem>

    </asp:MenuItem>

    <asp:MenuItem Text="Proveedores" Value="Proveedores">

    <asp:MenuItem Text="Incluir" Value="Incluir"></asp:MenuItem>

    <asp:MenuItem Text="Modificar" Value="Modificar"></asp:MenuItem>

    <asp:MenuItem Text="Eliminar" Value="Eliminar"></asp:MenuItem>

    </asp:MenuItem>

    <asp:MenuItem Text="Competidores" Value="Competidores">

    <asp:MenuItem Text="Incluir" Value="Incluir"></asp:MenuItem>

    <asp:MenuItem Text="Modificar" Value="Modificar"></asp:MenuItem>

    <asp:MenuItem Text="Eliminar" Value="Eliminar"></asp:MenuItem>

    </asp:MenuItem>

    <asp:MenuItem Text="Parners" Value="Parners">

    <asp:MenuItem Text="Incluir" Value="Incluir"></asp:MenuItem>

    <asp:MenuItem Text="Modificar" Value="Modificar"></asp:MenuItem>

    <asp:MenuItem Text="Eliminar" Value="Eliminar"></asp:MenuItem>

    </asp:MenuItem>

    </Items>

    <StaticHoverStyle BackColor="#990000" ForeColor="White" />

    </asp:Menu>

    &nbsp;

    </div>

    </form>

    </body>

    <script language="javascript" type="text/javascript">

    function OffMenu()

    {

    var x = window.document.getElementById("Menu1");

    if (x != null) {

    x.disabled=true;

    x.DynamicMenuStyle.disabled=true;

    }

    return;

    }

    </script>

    </html>

    ******************************** CODE BEHIND ******************

     

    Partial Class menuPrincipal

    Inherits System.Web.UI.Page

    Protected Sub Menu1_MenuItemClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MenuEventArgs) Handles Menu1.MenuItemClick

    System.Threading.Thread.Sleep(2000)

    End Sub

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

    End Class

     

     

    Agradezco sus comentarios.

     

    Gracias a todos

    lunes, 30 de julio de 2007 20:22

Todas las respuestas

  • Hola,

     

    ¿Por qué no lo intentas con código se servidor?, ya sabes que a veces hay bloqueos de los navegadores ante el JavaScript. Si haces el div contenedor runat=server le asignas un id, ya lo puedes ver desde el codebehind, y desde ahí puedes acceder a la propiedad disabled e igualarlo a true

     

    En el HTML

    <div id="divContenedor" runat="server">

    ....

    </div>

     

    En el codebehind (por ejemplo en Load de la página)

     

    divContenedor.Disabled = True

     

    Saludos.

    lunes, 06 de agosto de 2007 17:23
  • Señor, alguna solución al respecto ??

     

    martes, 25 de septiembre de 2007 12:49