protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsCallback)
        {
            if (!Page.IsPostBack)
            {
                try
                {
                    Master.nBotonera         = 9;
                    Master.bFuncionesLocales = true;
                    Master.Modulo            = "CVT";
                    hdnIdTipo.Value          = Request.QueryString["OPCION"].ToString();
                    switch (int.Parse(hdnIdTipo.Value))
                    {
                    case 1:
                        Master.TituloPagina = "Mantenimiento de Área de Conocimiento Sectorial";
                        break;

                    case 2:
                        Master.TituloPagina = "Mantenimiento de Área de Conocimiento Tecnológico";
                        break;

                    default:
                        Master.TituloPagina = "Mantenimiento de Áreas de Conocimiento";
                        break;
                    }
                    string[] aTabla = Regex.Split(AreaConocimientoCTV.CatalogoAreaConocimientoSec(int.Parse(hdnIdTipo.Value), true), "@#@");
                    if (aTabla[0] == "OK")
                    {
                        this.strTablaHTML = aTabla[1];
                    }
                    else
                    {
                        Master.sErrores += Errores.mostrarError(aTabla[1]);
                    }
                }
                catch (Exception ex)
                {
                    Master.sErrores = SUPER.Capa_Negocio.Errores.mostrarError("Error al cargar la página", ex);
                }
            }

            //1º Se indican (por este orden) la función a la que se va a devolver el resultado
            //   y la función que va a acceder al servidor
            string cbRespuesta = Page.ClientScript.GetCallbackEventReference(this, "arg", "RespuestaCallBack", "context", false);
            string cbLlamada   = "function RealizarCallBack(arg, context)" + "{" + cbRespuesta + ";" + "}";

            //2º Se "registra" la función que va a acceder al servidor.
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "RealizarCallBack", cbLlamada, true);
        }
    }
    public void RaiseCallbackEvent(string eventArg)
    {
        string sResultado = "";

        //1º Si hubiera argumentos, se recogen y tratan.
        string[] aArgs = Regex.Split(eventArg, "@#@");
        sResultado = aArgs[0] + @"@#@"; if (Session["IDRED"] == null)
        {
            _callbackResultado = aArgs[0] + @"@#@Error@#@SESIONCADUCADA"; return;
        }
        ;
        try
        {
            //2º Aquí realizaríamos el acceso a BD, etc,...
            switch (aArgs[0])
            {
            case ("grabar"):
                sResultado += "OK@#@" + AreaConocimientoCTV.Grabar(aArgs[1]);
                break;

            case ("mostrar"):
                bool?bActiva = true;
                if (aArgs[2] == "0")
                {
                    bActiva = null;
                }
                sResultado += AreaConocimientoCTV.CatalogoAreaConocimientoSec(int.Parse(aArgs[1]), bActiva);
                break;
            }
        }
        catch (Exception ex)
        {
            if (ex.Message.IndexOf("ErrorControlado") > -1)
            {
                sResultado += "Error@#@" + ex.Message;
            }
            else
            {
                sResultado += "Error@#@" + Errores.mostrarError("Error al guardar", ex);
            }
        }
        //3º Damos contenido a la variable que se envía de vuelta al cliente.
        _callbackResultado = sResultado;
    }