protected void DropDownList_IdSubPrograma_SelectedIndexChanged(object sender, EventArgs e)
    {
        Programa.Areas AREA = (Programa.Areas)Enum.Parse(typeof(Programa.Areas), HiddenField_ID_AREA.Value);

        if (DropDownList_IdSubPrograma.SelectedIndex <= 0)
        {
            DropDownList_EstadoSubPrograma.SelectedIndex = 0;
            TextBox_DescripcionSubPrograma.Text = "";
        }
        else
        {
            SubPrograma _sub = new SubPrograma(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            DataTable tablaSub = _sub.ObtenerSubProgramasPorId(Convert.ToDecimal(DropDownList_IdSubPrograma.SelectedValue), AREA);

            DataRow filaSub = tablaSub.Rows[0];

            DropDownList_EstadoSubPrograma.SelectedValue = filaSub["ACTIVO"].ToString().Trim();

            TextBox_DescripcionSubPrograma.Text = filaSub["DESCRIPCION"].ToString().Trim();
        }
    }
    private void Cargar(Decimal ID_SUB_PROGRAMA)
    {
        HiddenField_ID_SUB_PROGRAMA.Value = ID_SUB_PROGRAMA.ToString();

        Programa.Areas AREA = (Programa.Areas)Enum.Parse(typeof(Programa.Areas), HiddenField_ID_AREA.Value);

        SubPrograma _subPrograma = new  SubPrograma(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaSubprograma = _subPrograma.ObtenerSubProgramasPorId(ID_SUB_PROGRAMA, AREA);

        if (tablaSubprograma.Rows.Count <= 0)
        {
            if (String.IsNullOrEmpty(_subPrograma.MensajeError) == false)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _subPrograma.MensajeError, Proceso.Error);
            }
            else
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontró información del Sub Programa seleccionado", Proceso.Error);
            }
        }
        else
        {
            Ocultar(Acciones.Inicio);
            Desactivar(Acciones.Inicio);
            Mostrar(Acciones.Cargar);
            Cargar(Acciones.Cargar);

            DataRow filaSubprograma = tablaSubprograma.Rows[0];

            CargarControlRegistro(filaSubprograma);

            CargarInformacionSubprograma(filaSubprograma);
        }
    }
    protected void Button_GUARDAR_SUB_PROGRAMA_Click(object sender, EventArgs e)
    {
        Decimal ID_PROGRAMA_GENERAL = Convert.ToDecimal(HiddenField_ID_PROGRAMA_GENERAL.Value);
        Decimal ID_SUB_PROGRAMA = Convert.ToDecimal(DropDownList_IdSubPrograma.SelectedValue);

        Programa.Areas AREA_SUBPROGRAMA = (Programa.Areas)Enum.Parse(typeof(Programa.Areas), HiddenField_ID_AREA.Value);
        Int32 ANNO = Convert.ToInt32(HiddenField_ANNO.Value);

        SubPrograma _subprograma = new SubPrograma(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable TablaSubPrograma = _subprograma.ObtenerSubProgramasPorId(ID_SUB_PROGRAMA, AREA_SUBPROGRAMA);
        DataRow filaSubPrograma = TablaSubPrograma.Rows[0];

        String NOMBRE_SUBPROGRAMA = filaSubPrograma["NOMBRE"].ToString().Trim();

        Decimal ID_ACTIVIDAD = 0;

        Decimal ID_DETALLE_GENERAL_PADRE = 0;
        if (HiddenField_TIPO_NODO_SELECCIONADO.Value == TiposNodo.PROGRAMA.ToString())
        {
            ID_DETALLE_GENERAL_PADRE = 0;
        }
        else
        {
            ID_DETALLE_GENERAL_PADRE = Convert.ToDecimal(HiddenField_ID_NODO_SELECCIONADO.Value);
        }

        Programa _programa = new Programa(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        Boolean verificado = _programa.AdicionarDetalleGeneral(ID_PROGRAMA_GENERAL, TiposNodo.SUBPROGRAMA.ToString(), ID_DETALLE_GENERAL_PADRE, ID_SUB_PROGRAMA, ID_ACTIVIDAD);

        ocultar_mensaje(Panel_FONDO_NUEVO_SUBPROGAMA, Panel_CONTENIDO_NUEVO_SUBPROGRAMA);

        if (verificado == true)
        {
            DataTable tablaEsquemaPrograma = ObtenerEstructuraTablaPrograma();

            Cargar(tablaEsquemaPrograma);
            Cargar_GridView_EsquemaPrograma_DesdeTabla(tablaEsquemaPrograma);

            Informar(Panel_FONDO_MENSAJE_ARBOL, Image_MENSAJE_ARBOL_POPUP, Panel_MENSAJES_ARBOL, Label_MENSAJE_ARBOL, "El Programa para el año " + ANNO + " fue correctamente actualizado.", Proceso.Correcto);
        }
        else
        {
            Informar(Panel_FONDO_MENSAJE_ARBOL, Image_MENSAJE_ARBOL_POPUP, Panel_MENSAJES_ARBOL, Label_MENSAJE_ARBOL, "El Programa para el año " + ANNO + " no puedo ser actualizado: " + _programa.MensajeError, Proceso.Error);
        }
    }
    private void Buscar()
    {
        Ocultar(Acciones.Inicio);
        Desactivar(Acciones.Inicio);
        Mostrar(Acciones.Inicio);

        String datosCapturados = HiddenField_FILTRO_DATO.Value;
        String campo = HiddenField_FILTRO_DROP.Value;

        Programa.Areas AREA = (Programa.Areas)Enum.Parse(typeof(Programa.Areas), HiddenField_ID_AREA.Value);

        SubPrograma _SubPrograma = new SubPrograma(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        DataTable tablaResultadosBusqueda = new DataTable();

        if (campo == "ID_SUB_PROGRAMA")
        {
            tablaResultadosBusqueda = _SubPrograma.ObtenerSubProgramasPorId(Convert.ToDecimal(datosCapturados), AREA);
        }
        else
        {
            if (DropDownList_BUSCAR.SelectedValue == "NOMBRE")
            {
                tablaResultadosBusqueda = _SubPrograma.ObtenerSubProgramasPorNombre(datosCapturados, AREA);
            }
        }

        if (tablaResultadosBusqueda.Rows.Count <= 0)
        {
            if (_SubPrograma.MensajeError != null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _SubPrograma.MensajeError, Proceso.Error);
            }
            else
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontraron registros que cumplieran los datos de busqueda.", Proceso.Advertencia);
            }

            Panel_RESULTADOS_GRID.Visible = false;
        }
        else
        {
            Panel_RESULTADOS_GRID.Visible = true;

            GridView_RESULTADOS_BUSQUEDA.DataSource = tablaResultadosBusqueda;
            GridView_RESULTADOS_BUSQUEDA.DataBind();
        }
    }