private void Cargar(Listas lista, DropDownList drop)
    {
        Decimal ID_MAESTRA_COMPROMISO = Convert.ToDecimal(HiddenField_ID_MAESTRA_COMPROMISO.Value);

        Programa _prog = new Programa(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaResultado = _prog.ObtenerIdProgramaGeneralDesdeIdMaestraCompromiso(ID_MAESTRA_COMPROMISO);

        Decimal ID_PROGRAMA_GENERAL = 0;
        Decimal ID_EMPRESA = 0;
        if(tablaResultado.Rows.Count > 0)
        {
            DataRow filaResultado = tablaResultado.Rows[0];

            ID_PROGRAMA_GENERAL = Convert.ToDecimal(filaResultado["ID_PROGRAMA_GENERAL"]);
            ID_EMPRESA = Convert.ToDecimal(filaResultado["ID_EMPRESA"]);
        }

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

        switch (lista)
        {
            case Listas.SubProgramas:
                DataTable tablaProgramas = _prog.ObtenerSubProgramasDeUnProgramaGeneral(ID_PROGRAMA_GENERAL);

                drop.Items.Clear();
                drop.Items.Add(new ListItem("Seleccione...", ""));

                foreach (DataRow fila in tablaProgramas.Rows)
                {
                    Decimal ID_DETALLE_GENERAL = Convert.ToDecimal(fila["ID_DETALLE_GENERAL"]);
                    Decimal ID_SUB_PROGRAMA = Convert.ToDecimal(fila["ID_SUBPROGRAMA"]);

                    DataTable tablaActividadesPrograma = _prog.ObtenerActividadesPorDetalleGeneralPadre(ID_DETALLE_GENERAL);

                    if (tablaActividadesPrograma.Rows.Count > 0)
                    {
                        drop.Items.Add(new ListItem(fila["NOMBRE_SUB_PROGRAMA"].ToString().Trim(), ID_DETALLE_GENERAL.ToString() + ":" + ID_SUB_PROGRAMA.ToString()));
                    }
                }

                drop.DataBind();
                break;
            case Listas.EstadosActividades:
                drop.Items.Clear();
                parametro _parametroAC = new parametro(Session["idEmpresa"].ToString());
                DataTable tablaParametrosAC = _parametroAC.ObtenerParametrosPorTabla(tabla.PARAMETROS_ESTADO_ACTIVIDAD_RSE_GLOBAL);
                ListItem itemAC = new ListItem("Seleccione...", "");
                drop.Items.Add(itemAC);
                foreach (DataRow fila in tablaParametrosAC.Rows)
                {
                    itemAC = new ListItem(fila["DESCRIPCION"].ToString(), fila["CODIGO"].ToString());
                    drop.Items.Add(itemAC);
                }
                drop.DataBind();
                break;
            case Listas.TiposActividad:

                drop.Items.Clear();

                TipoActividad _tipoActividad = new TipoActividad(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                DataTable tablaParametrosTA = _tipoActividad.ObtenerTiposActividadPorAreayEstado(AREA_PROGRAMA, true);
                drop.Items.Add(new ListItem("Seleccione...", ""));

                foreach (DataRow fila in tablaParametrosTA.Rows)
                {
                    drop.Items.Add(new ListItem(fila["NOMBRE"].ToString(), fila["NOMBRE"].ToString()));
                }
                drop.DataBind();
                break;
            case Listas.SectoresActividad:
                drop.Items.Clear();
                parametro _parametroSA = new parametro(Session["idEmpresa"].ToString());
                DataTable tablaParametrosSA = _parametroSA.ObtenerParametrosPorTabla(tabla.PARAMETROS_SECTORES_ACTIVIDAD);
                drop.Items.Add(new ListItem("Seleccione...", ""));
                foreach (DataRow fila in tablaParametrosSA.Rows)
                {
                    drop.Items.Add(new ListItem(fila["DESCRIPCION"].ToString(), fila["CODIGO"].ToString()));
                }
                drop.DataBind();
                break;
            case Listas.Regionales:
                drop.Items.Clear();
                regional _regional = new regional(Session["idEmpresa"].ToString());
                DataTable tablaRegionales = _regional.ObtenerTodasLasRegionales();

                ListItem item = new ListItem("Seleccione...", "");
                drop.Items.Add(item);

                foreach (DataRow fila in tablaRegionales.Rows)
                {
                    item = new ListItem(fila["NOMBRE"].ToString(), fila["ID_REGIONAL"].ToString());
                    drop.Items.Add(item);
                }

                drop.DataBind();
                break;
            case Listas.Encargados:

                DataTable tablaEncargados = _prog.ObtenerUsuariosSistemaActivos();

                drop.Items.Add(new ListItem("Seleccione...", ""));

                foreach (DataRow fila in tablaEncargados.Rows)
                {
                    item = new ListItem(fila["NOMBRE_USUARIO"].ToString(), fila["USU_LOG"].ToString());
                    drop.Items.Add(item);
                }

                drop.DataBind();
                break;
        }
    }
    private void CargarDatosActividad(DataTable tablaActividad)
    {
        Image_Representativa.Visible = false;

        DataRow filaActividad = tablaActividad.Rows[0];

        Label_INFO_ADICIONAL_MODULO.Text = filaActividad["RAZ_SOCIAL"].ToString() + "<br>NIT: " +  filaActividad["NIT_EMPRESA"].ToString();

        HiddenField_ID_ACTIVIDAD.Value = filaActividad["ID_ACTIVIDAD"].ToString().Trim();
        HiddenField_ID_DETALLE.Value = filaActividad["ID_DETALLE"].ToString();
        HiddenField_ID_DETALLE_GENERAL.Value = filaActividad["ID_DETALLE_GENERAL"].ToString();
        HiddenField_ID_PROGRAMA_GENERAL.Value = filaActividad["ID_PROGRAMA_GENERAL"].ToString();
        HiddenField_ID_EMPRESA.Value = filaActividad["ID_EMPRESA"].ToString();
        HiddenField_ID_DETALLE_GENERAL_PADRE.Value = filaActividad["ID_DETALLE_GENERAL_PADRE"].ToString();
        HiddenField_ID_PRESUPUESTO.Value = filaActividad["ID_PRESUPUESTO"].ToString();

        HiddenField_PRESUPUESTO.Value = Convert.ToDecimal(filaActividad["PRESUPUESTO"]).ToString();
        HiddenField_PRESUPUESTO_ASIGNADO_EMPRESA.Value = Convert.ToDecimal(filaActividad["ASIGNADO"]).ToString();
        HiddenField_PRESUPUESTO_EJECUTADO_EMPRESA.Value = Convert.ToDecimal(filaActividad["EJECUTADO"]).ToString();

        HiddenField_SECCIONES_HABILITADAS.Value = filaActividad["SECCIONES_HABILITADAS"].ToString().Trim();

        Programa _programa = new Programa(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaSubPrograma = _programa.ObtenerProgramaAlQuePerteneceUnaActividadProgramada(Convert.ToDecimal(HiddenField_ID_DETALLE_GENERAL.Value));
        DataRow filaSubprograma = tablaSubPrograma.Rows[0];

        HiddenField_ID_SUB_PROGRAMA_PADRE.Value = filaSubprograma["ID_SUB_PROGRAMA"].ToString();

        Cargar(Listas.SubProgramas, DropDownList_SubPrograma);
        DropDownList_SubPrograma.SelectedValue = HiddenField_ID_SUB_PROGRAMA_PADRE.Value;

        DataTable tablaActividades = _programa.ObtenerActividadesPorDetalleGeneralPadre(Convert.ToDecimal(HiddenField_ID_DETALLE_GENERAL_PADRE.Value));
        CargarActividadesSegunSubPrograma(tablaActividades, DropDownList_IdActividad);

        DropDownList_IdActividad.SelectedValue = filaActividad["ID_ACTIVIDAD"].ToString().Trim();
        DropDownList_Tipo.SelectedValue = filaActividad["TIPO"].ToString().Trim();
        DropDownList_Sector.SelectedValue = filaActividad["SECTOR"].ToString().Trim();
        DropDownList_EstadoActividad.SelectedValue = filaActividad["ACTIVO"].ToString().Trim();

        TextBox_Resumen.Text = filaActividad["RESUMEN_ACTIVIDAD"].ToString().Trim();

        TextBox_FechaActividad.Text = Convert.ToDateTime(filaActividad["FECHA_ACTIVIDAD"]).ToShortDateString();

        TimePicker_HoraInicioActividad.SelectedTime = Convert.ToDateTime(filaActividad["HORA_INICIO"]);
        TimePicker_HoraFinActividad.SelectedTime = Convert.ToDateTime(filaActividad["HORA_FIN"]);

        TextBox_PresupuestoAsignado.Text = Convert.ToDecimal(filaActividad["PRESUPUESTO_APROBADO"]).ToString();

        RangeValidator_TextBox_PresupuestoAsignado.MinimumValue = "0";
        RangeValidator_TextBox_PresupuestoAsignado.MaximumValue = HiddenField_PRESUPUESTO.Value;

        TextBox_PersonalCitado.Text = Convert.ToInt32(filaActividad["PERSONAL_CITADO"]).ToString();

        RangeValidator_TextBox_PersonalCitado.Enabled = false;
        ValidatorCalloutExtender_TextBox_PersonalCitado_1.Enabled = false;
        Label_PersonalCitadoMaximo.Visible = false;

        Cargar(Listas.Encargados, DropDownList_Encargado);

        try
        {
            DropDownList_Encargado.SelectedValue = filaActividad["ENCARGADO"].ToString().Trim();
        }
        catch
        {
            DropDownList_Encargado.SelectedIndex = 0;
        }

        DataRow filaInfoCiudadActividad = obtenerDatosCiudadCliente(filaActividad["ID_CIUDAD"].ToString().Trim());
        if (filaInfoCiudadActividad != null)
        {
            DropDownList_REGIONAL.SelectedValue = filaInfoCiudadActividad["ID_REGIONAL"].ToString().Trim();
            cargar_DropDownList_DEPARTAMENTO(filaInfoCiudadActividad["ID_REGIONAL"].ToString().Trim());
            DropDownList_DEPARTAMENTO.SelectedValue = filaInfoCiudadActividad["ID_DEPARTAMENTO"].ToString().Trim();
            cargar_DropDownList_CIUDAD(filaInfoCiudadActividad["ID_REGIONAL"].ToString().Trim(), filaInfoCiudadActividad["ID_DEPARTAMENTO"].ToString().Trim());
            DropDownList_CIUDAD.SelectedValue = filaInfoCiudadActividad["ID_CIUDAD"].ToString().Trim();
        }
        else
        {
            inhabilitar_DropDownList_DEPARTAMENTO();
            inhabilitar_DropDownList_CIUDAD();
        }

        CargarBarraDeEstadoDeActividad(filaActividad["ID_ESTADO"].ToString().Trim());

        if (filaActividad["ID_ESTADO"].ToString().Trim() == Programa.EstadosDetalleActividad.CANCELADA.ToString())
        {
            Panel_MOTIVO_CANCELACION.Visible = true;
            TextBox_Motivocancelacion.Text = filaActividad["MOTIVO_CANCELACION"].ToString().Trim();
            try
            {
                DropDownList_MotivoCancelacion.SelectedValue = filaActividad["TIPO_CANCELACION"].ToString().Trim();
            }
            catch
            {
                DropDownList_MotivoCancelacion.SelectedIndex = 0;
            }

            Panel_LinkArchivoCancelacion.Visible = false;
            Panel_FileUploadArchivoCancelacion.Visible = false;
            if (DBNull.Value.Equals(filaActividad["ARCHIVO_CANCELACION"]) == true)
            {
            }
            else
            {
                Panel_LinkArchivoCancelacion.Visible = true;

                tools _tools = new tools();
                SecureQueryString QueryStringSeguro;
                QueryStringSeguro = new SecureQueryString(_tools.byteParaQueryStringSeguro());

                QueryStringSeguro["id_detalle"] = HiddenField_ID_DETALLE.Value;

                HyperLink_ArchivoCancelacion.NavigateUrl = "~/maestros/visorArchivoCancelacion.aspx?data=" + HttpUtility.UrlEncode(QueryStringSeguro.ToString());
                HyperLink_ArchivoCancelacion.Enabled = true;
                HyperLink_ArchivoCancelacion.Text = "Ver Archivo.";
            }
        }
        else
        {
            if (filaActividad["ID_ESTADO"].ToString().Trim() == Programa.EstadosDetalleActividad.TERMINADA.ToString())
            {
                Mostrar(Acciones.ResultadosActividad);

                TextBox_PresupuestoFinal.Text = Convert.ToDecimal(filaActividad["PRESUPUESTO_FINAL"]).ToString();
                TextBox_PersonalFinal.Text = Convert.ToDecimal(filaActividad["PERSONAL_FINAL"]).ToString();

                if (HiddenField_SECCIONES_HABILITADAS.Value.Contains("Resultados Encuesta") == true)
                {
                    LlenarcamposDeEncuesta(filaActividad["RESULTADOS_ENCUESTA"].ToString().Trim());
                    CargarLinkArchivo(Programa.TiposArchivo.ENCUESTA, HyperLink_ArchivoEncuesta);
                }

                if (HiddenField_SECCIONES_HABILITADAS.Value.Contains("Control Asistencia") == true)
                {
                    CargarTrabajadoresEmpresa();

                    CargarChulosDeAsistencia();

                    VisiblesSoloLosEmpleadosChueados();

                    CheckBox_TodosEmpleados.Checked = false;
                    TextBox_FiltroEmpleados.Text = "";

                    CargarLinkArchivo(Programa.TiposArchivo.ASISTENCIA, HyperLink_ArchivoAsistencia);
                }

                if (HiddenField_SECCIONES_HABILITADAS.Value.Contains("Entidades Colaboradoras") == true)
                {
                    CargarEntidadesQueColaboraron();
                }

                if (HiddenField_SECCIONES_HABILITADAS.Value.Contains("Compromisos") == true)
                {
                    CargarCompromisosActividad();
                    CheckBox_TodosEmpleados.Enabled = false;
                }

                CargarImagenYConclusiones(filaActividad);

                Panel_AdjuntarArchivos.Visible = true;
                Panel_NuevoAdjunto.Visible = false;
                Button_NuevoAdjunto.Visible = true;
                Button_GuardarAdjunto.Visible = false;
                Button_CancelarAdjunto.Visible = false;

                CargarAdjuntos();
            }
        }

        CargarHistorialAjustesAPresupuesto(Convert.ToDecimal(filaActividad["ID_DETALLE"]));

        CargarHistorialReprogramaciones(Convert.ToDecimal(filaActividad["ID_DETALLE"]));

        ComprobraEstadoActividad(filaActividad["ID_ESTADO"].ToString().Trim());
    }
    protected void DropDownList_SubPrograma_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (DropDownList_SubPrograma.SelectedIndex <= 0)
        {
            DropDownList_IdActividad.SelectedIndex = 0;
            DropDownList_Tipo.SelectedIndex = 0;
            DropDownList_Sector.SelectedIndex = 0;
            DropDownList_EstadoActividad.SelectedIndex = 0;
            TextBox_DescripcionActividad.Text = "";
        }
        else
        {
            Decimal ID_DETALLE_GENERAL_PADRE = Convert.ToDecimal(DropDownList_SubPrograma.SelectedValue.Split(':')[0]);

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

            CargarActividadesDeSubPrograma(tablaActividades, DropDownList_IdActividad);

            Cargar(Listas.TiposActividad, DropDownList_Tipo);
            Cargar(Listas.SectoresActividad, DropDownList_Sector);
            Cargar(Listas.EstadosActividades, DropDownList_EstadoActividad);

            DropDownList_IdActividad.SelectedIndex = 0;
            DropDownList_Tipo.SelectedIndex = 0;
            DropDownList_Sector.SelectedIndex = 0;
            DropDownList_EstadoActividad.SelectedIndex = 0;
            TextBox_DescripcionActividad.Text = "";
        }
    }
    private void Cargar(Listas lista, DropDownList drop)
    {
        Programa.Areas AREA_PROGRAMA = (Programa.Areas)Enum.Parse(typeof(Programa.Areas), HiddenField_ID_AREA.Value);

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

        ListItem item;

        drop.Items.Clear();

        switch (lista)
        {
            case Listas.SubProgramas:

                Decimal ID_PROGRAMA_GENERAL = Convert.ToDecimal(HiddenField_ID_PROGRAMA_GENERAL.Value);

                DataTable tablaProgramas = _prog.ObtenerSubProgramasDeUnProgramaGeneral(ID_PROGRAMA_GENERAL);

                drop.Items.Clear();
                drop.Items.Add(new ListItem("Seleccione...", ""));

                foreach (DataRow fila in tablaProgramas.Rows)
                {
                    Decimal ID_DETALLE_GENERAL = Convert.ToDecimal(fila["ID_DETALLE_GENERAL"]);
                    Decimal ID_SUB_PROGRAMA = Convert.ToDecimal(fila["ID_SUBPROGRAMA"]);

                    DataTable tablaActividadesPrograma = _prog.ObtenerActividadesPorDetalleGeneralPadre(ID_DETALLE_GENERAL);

                    if (tablaActividadesPrograma.Rows.Count > 0)
                    {
                        drop.Items.Add(new ListItem(fila["NOMBRE_SUB_PROGRAMA"].ToString().Trim(), ID_SUB_PROGRAMA.ToString()));
                    }
                }

                drop.DataBind();
                break;
            case Listas.EstadosActividades:
                drop.Items.Clear();
                parametro _parametroAC = new parametro(Session["idEmpresa"].ToString());
                DataTable tablaParametrosAC = _parametroAC.ObtenerParametrosPorTabla(tabla.PARAMETROS_ESTADO_ACTIVIDAD_RSE_GLOBAL);
                ListItem itemAC = new ListItem("Seleccione...", "");
                drop.Items.Add(itemAC);
                foreach (DataRow fila in tablaParametrosAC.Rows)
                {
                    itemAC = new ListItem(fila["DESCRIPCION"].ToString(), fila["CODIGO"].ToString());
                    drop.Items.Add(itemAC);
                }
                drop.DataBind();
                break;
            case Listas.TiposActividad:
                drop.Items.Clear();
                TipoActividad _tipoActividad = new TipoActividad(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                DataTable tablaParametrosTA = _tipoActividad.ObtenerTiposActividadPorAreayEstado(AREA_PROGRAMA, true);
                drop.Items.Add(new ListItem("Seleccione...", ""));

                foreach (DataRow fila in tablaParametrosTA.Rows)
                {
                    drop.Items.Add(new ListItem(fila["NOMBRE"].ToString(), fila["NOMBRE"].ToString()));
                }
                drop.DataBind();
                break;
            case Listas.SectoresActividad:
                drop.Items.Clear();
                parametro _parametroSA = new parametro(Session["idEmpresa"].ToString());
                DataTable tablaParametrosSA = _parametroSA.ObtenerParametrosPorTabla(tabla.PARAMETROS_SECTORES_ACTIVIDAD);
                drop.Items.Add(new ListItem("Seleccione...", ""));
                foreach (DataRow fila in tablaParametrosSA.Rows)
                {
                    drop.Items.Add(new ListItem(fila["DESCRIPCION"].ToString(), fila["CODIGO"].ToString()));
                }
                drop.DataBind();
                break;
            case Listas.Regionales:
                drop.Items.Clear();
                regional _regional = new regional(Session["idEmpresa"].ToString());
                DataTable tablaRegionales = _regional.ObtenerTodasLasRegionales();

                item = new ListItem("Seleccione...", "");
                drop.Items.Add(item);

                foreach (DataRow fila in tablaRegionales.Rows)
                {
                    item = new ListItem(fila["NOMBRE"].ToString(), fila["ID_REGIONAL"].ToString());
                    drop.Items.Add(item);
                }

                drop.DataBind();
                break;
            case Listas.EntidadesCOlaboradoras:
                EntidadColaboradora _entidad = new EntidadColaboradora(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

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

                DataTable tablaEntidades = _entidad.ObtenerTodasEntidadesPorAreaYEstado(AREA_ENTIDAD, true);

                drop.Items.Clear();
                drop.Items.Add(new ListItem("Seleccione...",""));

                foreach (DataRow fila in tablaEntidades.Rows)
                {
                    item = new ListItem(fila["NOMBRE"].ToString(), fila["ID_ENTIDAD"].ToString());
                    drop.Items.Add(item);
                }

                drop.DataBind();

                break;
            case Listas.Encargados:
                DataTable tablaEncargados = _prog.ObtenerUsuariosSistemaActivos();

                drop.Items.Clear();

                drop.Items.Add(new ListItem("Seleccione...",""));

                foreach (DataRow fila in tablaEncargados.Rows)
                {
                    item = new ListItem(fila["NOMBRE_USUARIO"].ToString(), fila["USU_LOG"].ToString());
                    drop.Items.Add(item);
                }

                drop.DataBind();

                break;
            case Listas.MotivosCancelacion:
                MotivoProgComp _motivoCancelacion = new MotivoProgComp(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

                DataTable tablaMotivosCancelacion = _motivoCancelacion.ObtenerMotivosActProgCompPorAreaYTipo(AREA_PROGRAMA, "CANCELACION");

                drop.Items.Add(new ListItem("Seleccione...", ""));

                foreach (DataRow fila in tablaMotivosCancelacion.Rows)
                {
                    if (fila["ACTIVO"].ToString() == "True")
                    {
                        drop.Items.Add(new ListItem(fila["MOTIVO"].ToString(), fila["MOTIVO"].ToString()));
                    }
                }

                drop.DataBind();

                break;
            case Listas.MotivosReprogramacion:
                MotivoProgComp _motivoRepro = new MotivoProgComp(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

                DataTable tablaMotivosRepro = _motivoRepro.ObtenerMotivosActProgCompPorAreaYTipo(AREA_PROGRAMA, "REPROGRAMACION");

                drop.Items.Add(new ListItem("Seleccione...", ""));

                foreach (DataRow fila in tablaMotivosRepro.Rows)
                {
                    if (fila["ACTIVO"].ToString() == "True")
                    {
                        drop.Items.Add(new ListItem(fila["MOTIVO"].ToString(), fila["MOTIVO"].ToString()));
                    }
                }

                drop.DataBind();

                break;
            case Listas.ResponsablesCompromisos:
                DataTable tablaResponsables = _prog.ObtenerUsuariosSistemaActivos();

                drop.Items.Clear();

                drop.Items.Add(new ListItem("Seleccione...",""));
                drop.Items.Add(new ListItem("CLIENTE", "CLIENTE"));

                foreach (DataRow fila in tablaResponsables.Rows)
                {
                    item = new ListItem(fila["NOMBRE_USUARIO"].ToString(), fila["USU_LOG"].ToString());
                    drop.Items.Add(item);
                }

                drop.DataBind();
                break;
        }
    }