public void RaiseCallbackEvent(string eventArg)
    {
        string sResultado = "", sCad = "";

        //1º Si hubiera argumentos, se recogen y tratan.
        //string MisArg = eventArg;
        string[] aArgs = Regex.Split(eventArg, "@#@");
        sResultado = aArgs[0] + @"@#@"; if (Session["GVT_IDRED"] == null)
        {
            _callbackResultado = aArgs[0] + @"@#@Error@#@SESIONCADUCADA"; return;
        }
        ;

        //2º Aquí realizaríamos el acceso a BD, etc,...
        switch (aArgs[0])
        {
        case ("tramitar"):
            try
            {
                sResultado += "OK@#@" + CABECERAGV.TramitarNotaMultiProyecto(aArgs[1], aArgs[2], aArgs[3]);
            }
            catch (Exception ex)
            {
                string[] aMsg = Regex.Split(ex.Message, "##EC##");

                if (aMsg[0] == "ErrorControlado")
                {
                    sResultado += "Error@#@" + aMsg[1];
                }
                else
                {
                    sResultado += "Error@#@" + Errores.mostrarError("Error al tramitar la solicitud multiproyecto.", ex);
                }
            }
            break;

        case ("aparcar"):
            try
            {
                sResultado += "OK@#@" + CABECERAAPARCADA_NMPGV.AparcarNotaMultiProyecto(aArgs[1], aArgs[2]);
            }
            catch (Exception ex)
            {
                if (ex.Message == "Solicitud aparcada no existente")
                {
                    sResultado += "OK@#@" + ex.Message;
                }
                else
                {
                    sResultado += "Error@#@" + Errores.mostrarError("Error al aparcar la solicitud multiproyecto.", ex);
                }
            }
            break;


        //case ("tarearecurso"):
        //    sResultado += ObtenerDatosTareaRecurso(aArgs[1], aArgs[2]);
        //    break;
        case ("getDatosPestana"):
            switch (int.Parse(aArgs[1]))
            {
            case 0:        //Gastos
                //nada porque al ser la primera pestaña se carga directamente en el Page_Load
                break;

            case 1:        //Anticipos
                //sCad = ObtenerRecursosAsociados(aArgs[2], aArgs[4], false);
                if (sCad.IndexOf("Error@#@") >= 0)
                {
                    sResultado += sCad;
                }
                else
                {
                    sResultado += "OK@#@" + aArgs[1] + "@#@" + sCad;
                }
                break;

            case 2:        //Otros datos
                //sCad = ObtenerRecursosAsociados(aArgs[2], aArgs[4], false);
                if (sCad.IndexOf("Error@#@") >= 0)
                {
                    sResultado += sCad;
                }
                else
                {
                    sResultado += "OK@#@" + aArgs[1] + "@#@" + sCad;
                }
                break;
            }
            break;

        case ("eliminar"):
            try
            {
                CABECERAAPARCADA_NMPGV.Eliminar(int.Parse(aArgs[1]));
                sResultado += "OK@#@";
            }
            catch (Exception ex)
            {
                sResultado += "Error@#@" + Errores.mostrarError("Error al eliminar la solicitud multiproyecto.", ex);
            }
            break;

        case ("getDatosBeneficiario"):
            try
            {
                sResultado += "OK@#@" + ObtenerDatosBeneficiario(int.Parse(aArgs[1]));
            }
            catch (Exception ex)
            {
                sResultado += "Error@#@" + Errores.mostrarError("Error al obtener los datos del beneficiario.", ex);
            }
            break;

        case ("getDatosEmpresas"):
            try
            {
                sResultado += "OK@#@" + ObtenerDatosEmpresas(int.Parse(aArgs[1]));
            }
            catch (Exception ex)
            {
                sResultado += "Error@#@" + Errores.mostrarError("Error al obtener los datos del beneficiario.", ex);
            }
            break;
        }

        //3º Damos contenido a la variable que se envía de vuelta al cliente.
        _callbackResultado = sResultado;
    }
    protected bool ObtenerDatosCabeceraAparcadaMultiProyecto(int nReferencia)
    {
        bool bAvisoEmpresaNoVigente = false;
        CABECERAAPARCADA_NMPGV oCab = CABECERAAPARCADA_NMPGV.ObtenerDatosCabecera(nReferencia);

        hdnReferencia.Text         = oCab.t663_idreferencia.ToString();
        hdnInteresado.Text         = oCab.t314_idusuario_interesado.ToString();
        sNodoUsuario               = oCab.t303_denominacion_beneficiario;
        hdnOficinaLiquidadora.Text = oCab.oOficinaLiquidadora.t010_idoficina.ToString();
        imgEstado.ImageUrl         = "~/Images/imgEstadoP.gif";
        hdnEstado.Text             = "P";
        hdnEstadoAnterior.Text     = "P";
        txtInteresado.Text         = oCab.Interesado;
        //txtReferencia.Text = oCab.t420_idreferencia.ToString("#,###");
        txtConcepto.Text = oCab.t663_concepto;
        txtEmpresa.Text  = oCab.t313_denominacion;
        //cboMotivo.SelectedValue = oCab.t423_idmotivo.ToString();
        txtOficinaLiq.Text        = oCab.oOficinaLiquidadora.t010_desoficina;
        hdnIdProyectoSubNodo.Text = (oCab.t305_idproyectosubnodo.HasValue) ? oCab.t305_idproyectosubnodo.ToString() : "";
        txtProyecto.Text          = (oCab.t305_idproyectosubnodo.HasValue) ? ((int)oCab.t301_idproyecto).ToString("#,###") + " - " + oCab.t301_denominacion : "";
        if (oCab.t305_idproyectosubnodo.HasValue)
        {
            sToolTipProyectoPorDefecto = PROYECTO.ObtenerTooltipProyectoUsuario((int)oCab.t305_idproyectosubnodo, oCab.t314_idusuario_interesado);
            txtProyecto.Attributes.Add("title", "cssbody=[dvbdy] cssheader=[dvhdr] header=[<img src='../../images/info.gif' style='vertical-align:middle' />  Transporte] body=[" + sToolTipProyectoPorDefecto + "] hideselects=[off]");
        }

        cboMoneda.SelectedValue = oCab.t422_idmoneda.ToString();
        if (oCab.t663_justificantes.HasValue)
        {
            if ((bool)oCab.t663_justificantes)
            {
                rdbJustificantes.Items[0].Selected = true;
            }
            else
            {
                rdbJustificantes.Items[1].Selected = true;
            }
        }
        txtObservacionesNota.Text     = oCab.t663_comentarionota;
        hdnAnotacionesPersonales.Text = oCab.t663_anotaciones;

        //hdnOficinaBase.Text = (oCab.t010_idoficina_base.HasValue)? oCab.t010_idoficina_base.ToString():"";
        //hdnIDEmpresa.Text = oCab.t313_idempresa.ToString();
        //hdnIDTerritorio.Text = oCab.oTerritorio.T007_IDTERRFIS.ToString();

        cldKMCO.InnerText = oCab.oDietaKm.t069_ick.ToString("N");
        cldDCCO.InnerText = oCab.oDietaKm.t069_icdc.ToString("N");
        cldMDCO.InnerText = oCab.oDietaKm.t069_icmd.ToString("N");
        cldDECO.InnerText = oCab.oDietaKm.t069_icde.ToString("N");
        cldDACO.InnerText = oCab.oDietaKm.t069_icda.ToString("N");
        //cldKMEX.InnerText = oCab.oTerritorio.T007_ITERK.ToString("N");
        //cldDCEX.InnerText = oCab.oTerritorio.T007_ITERDC.ToString("N");
        //cldMDEX.InnerText = oCab.oTerritorio.T007_ITERMD.ToString("N");
        //cldDEEX.InnerText = oCab.oTerritorio.T007_ITERDE.ToString("N");
        //cldDAEX.InnerText = oCab.oTerritorio.T007_ITERDA.ToString("N");

        hdnOficinaBase.Text        = (oCab.t010_idoficina_base.HasValue) ? oCab.t010_idoficina_base.ToString() : "";
        hdnOficinaLiquidadora.Text = oCab.oOficinaLiquidadora.t010_idoficina.ToString();

        //setEmpresaTerritorio(oCab.t314_idusuario_interesado);

        int idEmpresaDefecto = GASVI.DAL.Configuracion.GetEmpresaDefecto(null, oCab.t001_codred);

        bAvisoEmpresaNoVigente = setEmpresaTerritorio(oCab.t314_idusuario_interesado, oCab.t001_idficepi_interesado, oCab.Interesado,
                                                      idEmpresaDefecto, (oCab.t313_idempresa == null) ? 0 : (int)oCab.t313_idempresa);
        return(bAvisoEmpresaNoVigente);
    }