예제 #1
0
        private void GenerarMenu(int usuarioID)
        {
            try
            {
                this.mSisPack.Items.Clear();

                /* Obtenemos todo el menú habilitado para el usuario de la sesión. */
                IOpcion opcion = OpcionFactory.GetOpcion();
                opcion.EsAccion = false;

                /*Obtenemos la variable que indica si es Servidor de Reportes o Produccion*/
                string permiteReportes = System.Configuration.ConfigurationManager.AppSettings["Server"];
                bool   esReporte       = permiteReportes == "R" ? true : false;// Convert.ToBoolean(permiteReportes);

                DsOpcion ds = opcion.GetOpcionesMenuByUsuarioID(usuarioID, esReporte);

                /* Creamos el nodo principal (raíz). */
                foreach (DataRow dr in ds.Datos.Select("OpcionPadreID IS NULL", "OrdenVisual"))
                {
                    /* Creamos un nodo padre. */
                    System.Web.UI.WebControls.MenuItem itemPadre = new System.Web.UI.WebControls.MenuItem();

                    itemPadre.Text  = dr["Titulo"].ToString();
                    itemPadre.Value = dr["OpcionID"].ToString();

                    if (ds.Datos.Select("OpcionPadreID = '" + dr["OpcionID"] + "'", "OrdenVisual").Length > 0)
                    {
                        /* Generar los subnodos recursivamente. */
                        GenerarSubMenu(itemPadre, ds, ds.Datos.Select("OpcionPadreID = '" + dr["OpcionID"] + "'", "OrdenVisual"));
                    }
                    else
                    {
                        /* Si tiene una Url seteada la colocamos al nodo. */
                        if (!dr["Url"].ToString().Equals(""))
                        {
                            itemPadre.NavigateUrl = dr["Url"].ToString();
                        }
                        else
                        {
                            itemPadre.Selected = false;
                        }
                    }

                    /* Agregamos el nodo padre(completo) al nodo raíz. */
                    this.mSisPack.Items.Add(itemPadre);
                }

                opcion = null;
                ds     = null;
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }