protected void GridView_EsquemaPrograma_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        int indexSeleccionado = Convert.ToInt32(e.CommandArgument);

        Decimal ID_PROGRAMA_GENERAL = Convert.ToDecimal(GridView_EsquemaPrograma.DataKeys[indexSeleccionado].Values["ID_PROGRAMA_GENERAL"]); ;
        Decimal ID_DETALLE_GENERAL = Convert.ToDecimal(GridView_EsquemaPrograma.DataKeys[indexSeleccionado].Values["ID_DETALLE_GENERAL"]);

        HiddenField_ID_PROGRAMA_GENERAL.Value = ID_PROGRAMA_GENERAL.ToString();
        HiddenField_ID_NODO_SELECCIONADO.Value = ID_DETALLE_GENERAL.ToString();

        if (e.CommandName == "nuevo_programa")
        {
            HiddenField_TIPO_NODO_SELECCIONADO.Value = TiposNodo.SUBPROGRAMA.ToString();
            MostrarFormularioCreacionSubprogramaActividad(Panel_FONDO_NUEVO_SUBPROGAMA, Panel_CONTENIDO_NUEVO_SUBPROGRAMA);

            Cargar(Acciones.Subprograma);
            Activar(Acciones.Subprograma);
            TextBox_DescripcionSubPrograma.Text = "";
        }
        else
        {
            if (e.CommandName == "nueva_actividad")
            {
                HiddenField_TIPO_NODO_SELECCIONADO.Value = TiposNodo.ACTIVIDAD.ToString();
                MostrarFormularioCreacionSubprogramaActividad(Panel_FONDO_ACTIVIDAD, Panel_CONTENIDO_ACTIVIDAD);

                Cargar(Acciones.Actividad);
                Activar(Acciones.Actividad);
                TextBox_DescripcionActividad.Text = "";
            }
            else
            {
                if (e.CommandName == "eliminar")
                {
                    Boolean programaActualizado = false;

                    GridViewRow filaGrilla = GridView_EsquemaPrograma.Rows[indexSeleccionado];
                    Label textoNombreEntidad = filaGrilla.FindControl("Label_NombreSubprogramaActividad") as Label;
                    Label textoDescripcionEntidad = filaGrilla.FindControl("Label_DescripcionProgramaActividad") as Label;

                    if (GridView_EsquemaPrograma.DataKeys[indexSeleccionado].Values["TIPO"].ToString() == TiposNodo.ACTIVIDAD.ToString())
                    {
                        Programa _prog = new Programa(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                        DataTable tablaAsignaciones = _prog.ObtenerAsignacionesDeUnaActividadAProgramaEspecifico(ID_DETALLE_GENERAL);

                        if (tablaAsignaciones.Rows.Count <= 0)
                        {
                            if (_prog.MensajeError != null)
                            {
                                Informar(Panel_FONDO_MENSAJE_ARBOL, Image_MENSAJE_ARBOL_POPUP, Panel_MENSAJES_ARBOL, Label_MENSAJE_ARBOL, _prog.MensajeError, Proceso.Error);
                            }
                            else
                            {
                                Label_TipoEntidadEliminacion.Text = TiposNodo.ACTIVIDAD.ToString();
                                Label1_IdentificadorEntidadEliminacion.Text = ID_DETALLE_GENERAL.ToString();

                                Label_DescripcionEntidadEliminacion.Text = textoNombreEntidad.Text + ": " + textoDescripcionEntidad.Text;

                                MostrarFormularioConfirmacionEliminacionActividadSubprograma(Panel_FONDO_CONFIRMACION_ELIMINACION, Panel_CONTENIDO_CONFIRMACION_ELIMINACION);

                            }
                        }
                        else
                        {
                            Informar(Panel_FONDO_MENSAJE_ARBOL, Image_MENSAJE_ARBOL_POPUP, Panel_MENSAJES_ARBOL, Label_MENSAJE_ARBOL, "La Actividad que intenta eliminar ya fue asignada en uno o más Programas Específicos, no puede ser eliminada del Programa General", Proceso.Advertencia);
                        }
                    }
                    else
                    {
                        if (contarDependenciasDeIdDetalleGeneral(ID_DETALLE_GENERAL) <= 0)
                        {
                            Label_TipoEntidadEliminacion.Text = TiposNodo.SUBPROGRAMA.ToString();
                            Label1_IdentificadorEntidadEliminacion.Text = ID_DETALLE_GENERAL.ToString();

                            Label_DescripcionEntidadEliminacion.Text = textoNombreEntidad.Text + ": " + textoDescripcionEntidad.Text;

                            MostrarFormularioConfirmacionEliminacionActividadSubprograma(Panel_FONDO_CONFIRMACION_ELIMINACION, Panel_CONTENIDO_CONFIRMACION_ELIMINACION);

                        }
                        else
                        {
                            Informar(Panel_FONDO_MENSAJE_ARBOL, Image_MENSAJE_ARBOL_POPUP, Panel_MENSAJES_ARBOL, Label_MENSAJE_ARBOL, "El Subprograma seleccionado tiene Actividades o SubProgramas Asociados, no puede ser eliminado.", Proceso.Advertencia);
                        }
                    }

                    if (programaActualizado == true)
                    {
                        DataTable tablaEsquemaPrograma = ObtenerEstructuraTablaPrograma();
                        Cargar(tablaEsquemaPrograma);
                        Cargar_GridView_EsquemaPrograma_DesdeTabla(tablaEsquemaPrograma);
                    }
                }
            }
        }
    }