protected void Button_GUARDAR_Click(object sender, EventArgs e)
    {
        Boolean verificador = true;

        requisito _requisito = new requisito(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        DataTable tablaDocumentos = new DataTable();
        tablaDocumentos.Columns.Add("ID_CONTROL_REQUISITOS");
        tablaDocumentos.Columns.Add("ID_PRUEBA");
        tablaDocumentos.Columns.Add("ID_DOCUMENTO");
        tablaDocumentos.Columns.Add("CUMPLIDO");
        tablaDocumentos.Columns.Add("DEROGADO");
        tablaDocumentos.Columns.Add("OBSERVACIONES");

        for (int i = 0; i < GridView_Documentos.Rows.Count; i++)
        {
            GridViewRow filaGrilla = GridView_Documentos.Rows[i];

            CheckBox checkCumplido = filaGrilla.FindControl("CheckBox_Cumplido") as CheckBox;
            CheckBox checkDerogado = filaGrilla.FindControl("CheckBox_Derogado") as CheckBox;
            TextBox textoObservaciones = filaGrilla.FindControl("TextBox_Observaciones") as TextBox;

            DataRow filaTabla = tablaDocumentos.NewRow();

            filaTabla["ID_CONTROL_REQUISITOS"] = GridView_Documentos.DataKeys[i].Values["ID_CONTROL_REQUISITOS"].ToString();
            filaTabla["ID_PRUEBA"] = GridView_Documentos.DataKeys[i].Values["ID_PRUEBA"].ToString();
            filaTabla["ID_DOCUMENTO"] = GridView_Documentos.DataKeys[i].Values["ID_DOCUMENTO"].ToString();

            filaTabla["CUMPLIDO"] = "";
            if (checkCumplido.Checked == true)
            {
                filaTabla["CUMPLIDO"] = "1";
            }

            filaTabla["DEROGADO"] = "";
            filaTabla["OBSERVACIONES"] = "";
            if (checkDerogado.Checked == true)
            {
                filaTabla["DEROGADO"] = "1";

                if (String.IsNullOrEmpty(textoObservaciones.Text.Trim()) == true)
                {
                    verificador = false;
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "Las OBSERVACIONES no pueden estar vacios cuando se DEROGA algún documento!.", Proceso.Advertencia);
                    break;
                }
                else
                {
                    filaTabla["OBSERVACIONES"] = textoObservaciones.Text.Trim();
                }
            }

            tablaDocumentos.Rows.Add(filaTabla);
        }

        if (verificador == true)
        {
            if (tablaDocumentos.Rows.Count <= 0)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontraron documentos en la Grilla de derogaciones!.", Proceso.Error);
            }
            else
            {
                Boolean cumplido = _requisito.Cumplir(tablaDocumentos);

                if (cumplido)
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La información para derogaciones fue almacenada correctamente.", Proceso.Correcto);

                    Ocultar(Acciones.Inicio);
                    Mostrar(Acciones.Carga);

                    Consultar(Convert.ToDecimal(HiddenField_ID_REQUERIMIENTO.Value), Convert.ToDecimal(HiddenField_ID_SOLICITUD.Value));
                    InhabilitarTodasFilasGrilla(GridView_Documentos, 0);
                }
                else
                {
                    if (!String.IsNullOrEmpty(_requisito.MensajeError))
                    {
                        Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "Error: Consulte con el Administrador: " + _requisito.MensajeError, Proceso.Error);
                    }
                }
            }
        }
    }
    protected void Consultar(Decimal id_requerimiento, Decimal id_solicitud)
    {
        requisito _requisito = new requisito(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable _dataTable = _requisito.ObtenerPorIdentificador(id_requerimiento, id_solicitud);

        if (_dataTable.Rows.Count > 0)
        {
            Session["requisitos"] = _dataTable;
            Cargar(GridView_Documentos, _dataTable);
        }
        else
        {
            if (!String.IsNullOrEmpty(_requisito.MensajeError))
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "Error: Consulte con el Administrador: " + _requisito.MensajeError, Proceso.Error);
            }
            else
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontró información para " + this.DropDownList_BUSCAR.SelectedItem + " : " + this.TextBox_BUSCAR.Text, Proceso.Advertencia);
            }

            Mostrar(Acciones.BusquedaNoEncontro);
        }

        _dataTable.Dispose();
    }
    private DataTable devolverRequisitosFaltantes(Decimal ID_REQUERIMIENTO, Decimal ID_SOLICITUD)
    {
        DataTable tablaResultado = new DataTable();
        tablaResultado.Columns.Add("TIPO_REQUISITO");
        tablaResultado.Columns.Add("DOCUMENTO");
        DataRow filaResultado;

        requisito _requisito = new requisito(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaTodosRequisitos = _requisito.VerificarRequisitos(ID_REQUERIMIENTO, ID_SOLICITUD);

        foreach (DataRow filaOriginal in tablaTodosRequisitos.Rows)
        {
            if ((filaOriginal["CUMPLIDO"].ToString() == "") && (filaOriginal["DEROGADO"].ToString() == ""))
            {
                filaResultado = tablaResultado.NewRow();
                filaResultado["TIPO_REQUISITO"] = filaOriginal["TIPO_REQUISITO"];
                filaResultado["DOCUMENTO"] = filaOriginal["DOCUMENTO"];

                tablaResultado.Rows.Add(filaResultado);
            }
        }

        return tablaResultado;
    }