void SelectAutoridadNivel3()
        {
            BPAutoridad oBPAutoridad = new BPAutoridad();

            try
            {

                // Formulario
                oBPAutoridad.AutoridadEntity.AutoridadIdPadrePrimerNivel = Convert.ToInt32(ddlAutoridadNivel1.SelectedValue);
                oBPAutoridad.AutoridadEntity.AutoridadIdPadreSegundoNivel = Convert.ToInt32(ddlAutoridadNivel2.SelectedValue);

                // Transacción
                oBPAutoridad.SelectNivelesAutoridad();

                // Validaciones
                if (oBPAutoridad.ErrorId != 0) { throw new Exception(oBPAutoridad.ErrorDescription); }

                // Llenado de controles
                if (oBPAutoridad.AutoridadEntity.dsResponse.Tables[0].Rows.Count > 0){
                    this.ddlAutoridadNivel3.DataSource = oBPAutoridad.AutoridadEntity.dsResponse.Tables[2];
                    this.ddlAutoridadNivel3.DataTextField = "Nombre";
                    this.ddlAutoridadNivel3.DataValueField = "AutoridadId";
                    this.ddlAutoridadNivel3.DataBind();
                }

            }catch (Exception ex){
                ScriptManager.RegisterStartupScript(this.Page, this.GetType(), Convert.ToString(Guid.NewGuid()), "alert('" + gcJavascript.ClearText(ex.Message) + "');", true);
            }
        }
        void MostrarDetalleAutoridadPopUp(int SolicitudId, int AutoridadId)
        {
            BPAutoridad oBPAutoridad = new BPAutoridad();

            oBPAutoridad.AutoridadEntity.SolicitudId = SolicitudId;
            oBPAutoridad.AutoridadEntity.AutoridadId = AutoridadId;

            oBPAutoridad.SelectDetalleAutoridadesSolicitud();

            if (oBPAutoridad.ErrorId == 0){

                if (oBPAutoridad.AutoridadEntity.dsResponse.Tables[0].Rows.Count > 0){

                    this.ddlActionPrimerNivel.SelectedValue = oBPAutoridad.AutoridadEntity.dsResponse.Tables[0].Rows[0]["NivelId1"].ToString();
                    ComboAutoridadSegundoNivel();

                    this.ddlActionSegundoNivel.SelectedValue = oBPAutoridad.AutoridadEntity.dsResponse.Tables[0].Rows[0]["NivelId2"].ToString();
                    ComboAutoridadTercerNivel();

                    this.ddlActionTercerNivel.SelectedValue = oBPAutoridad.AutoridadEntity.dsResponse.Tables[0].Rows[0]["NivelId3"].ToString();

                    tbActionNombreFuncionario.Text = oBPAutoridad.AutoridadEntity.dsResponse.Tables[0].Rows[0]["Nombre"].ToString();
                    tbActionPuestoActual.Text = oBPAutoridad.AutoridadEntity.dsResponse.Tables[0].Rows[0]["Puesto"].ToString();
                    tbActionComentarios.Text = oBPAutoridad.AutoridadEntity.dsResponse.Tables[0].Rows[0]["Comentarios"].ToString();

                    this.btnActionAgregarAutoridad.Text = "Modificar autoridad";
                    this.lblActionTitle.Text = "Modificar autoridad";
                    this.pnlAction.Visible = true;

                    // Foco
                    ScriptManager.RegisterStartupScript(this.Page, this.GetType(), Convert.ToString(Guid.NewGuid()), "focusControl('" + this.tbActionNombreFuncionario.ClientID + "');", true);

                }

            }
        }
        void MostrarDetalleAutoridad(int SolicitudId, int AutoridadId)
        {
            BPAutoridad oBPAutoridad = new BPAutoridad();

            oBPAutoridad.AutoridadEntity.SolicitudId = SolicitudId;
            oBPAutoridad.AutoridadEntity.AutoridadId = AutoridadId;

            oBPAutoridad.SelectDetalleAutoridadesSolicitud();

            if (oBPAutoridad.ErrorId == 0){

                if (oBPAutoridad.AutoridadEntity.dsResponse.Tables[0].Rows.Count > 0){
                    lblVocesNivel1.Text = oBPAutoridad.AutoridadEntity.dsResponse.Tables[0].Rows[0]["Nivel1"].ToString();
                    lblVocesNivel2.Text = oBPAutoridad.AutoridadEntity.dsResponse.Tables[0].Rows[0]["Nivel2"].ToString();
                    lblVocesNivel3.Text = oBPAutoridad.AutoridadEntity.dsResponse.Tables[0].Rows[0]["Nivel3"].ToString();
                    lblVocesNombre.Text = oBPAutoridad.AutoridadEntity.dsResponse.Tables[0].Rows[0]["Nombre"].ToString();
                    lblVocesPuesto.Text = oBPAutoridad.AutoridadEntity.dsResponse.Tables[0].Rows[0]["Puesto"].ToString();
                    lblVocesObservaciones.Text = oBPAutoridad.AutoridadEntity.dsResponse.Tables[0].Rows[0]["Comentarios"].ToString();

                    // Estado inicial del PopUp
                    ComboVocesTemporalPrimerNivel();
                    LlenarGridVoces_Temporal(Convert.ToInt32(SolicitudId), Convert.ToInt32(AutoridadId));

                    // Foco
                    ScriptManager.RegisterStartupScript(this.Page, this.GetType(), Convert.ToString(Guid.NewGuid()), "focusControl('" + this.ddlVocesTemporal_Nivel1.ClientID + "');", true);

                    // Panel Visible
                    this.pnlVoces.Visible = true;
                }

            }
        }
        void ModificarAutoridad(int SolicitudId)
        {
            BPAutoridad oBPAutoridad = new BPAutoridad();
            ENTAutoridad oENTAutoridad = new ENTAutoridad();
            ENTResponse oENTResponse = new ENTResponse();

            try
            {

                // Validaciones
                if (this.ddlActionPrimerNivel.SelectedValue == "0") { throw new Exception("Debe elegir una autoridad de primer nivel"); }
                if (this.ddlActionSegundoNivel.SelectedValue == "0") { throw new Exception("Debe elegir una autoridad de segundo nivel"); }
                if (this.ddlActionTercerNivel.SelectedValue == "0") { throw new Exception("Debe elegir una autoridad de tercer nivel"); }
                if (String.IsNullOrEmpty(this.tbActionNombreFuncionario.Text)) { throw new Exception("El campo [Nombre] es requerido"); }

                // Formulario
                oENTAutoridad.SolicitudId = SolicitudId;
                oENTAutoridad.AutoridadId = Convert.ToInt32(this.hddAutoridadId.Value);
                oENTAutoridad.Nombre = tbActionNombreFuncionario.Text;
                oENTAutoridad.Puesto = tbActionPuestoActual.Text;
                oENTAutoridad.Comentario = tbActionComentarios.Text;

                //Transacción
                oENTResponse = oBPAutoridad.UpdateSolicitudAutoridad(oENTAutoridad);

                //Validaciones
                if (oENTResponse.GeneratesException) { throw new Exception(oENTResponse.sErrorMessage); }
                if (oENTResponse.sMessage != "") { throw new Exception(oENTResponse.sMessage); }

                // Transacción exitosa
                this.pnlAction.Visible = false;
                ScriptManager.RegisterStartupScript(this.Page, this.GetType(), Convert.ToString(Guid.NewGuid()), "alert('Autoridad modificada con éxito');", true);

            }catch (Exception ex){
                ScriptManager.RegisterStartupScript(this.Page, this.GetType(), Convert.ToString(Guid.NewGuid()), "focusControl('" + this.tbActionNombreFuncionario.ClientID + "');", true);
                throw (ex);
            }
        }
        void ComboAutoridadTercerNivel()
        {
            BPAutoridad oBPAutoridad = new BPAutoridad();

            oBPAutoridad.AutoridadEntity.AutoridadIdPadrePrimerNivel = Convert.ToInt32(ddlActionPrimerNivel.SelectedValue);
            oBPAutoridad.AutoridadEntity.AutoridadIdPadreSegundoNivel = Convert.ToInt32(ddlActionSegundoNivel.SelectedValue);
            oBPAutoridad.SelectNivelesAutoridad();

            if (oBPAutoridad.ErrorId == 0){
                if (oBPAutoridad.AutoridadEntity.dsResponse.Tables[0].Rows.Count > 0){
                    ddlActionTercerNivel.DataSource = oBPAutoridad.AutoridadEntity.dsResponse.Tables[2];
                    ddlActionTercerNivel.DataTextField = "Nombre";
                    ddlActionTercerNivel.DataValueField = "AutoridadId";
                    ddlActionTercerNivel.DataBind();
                }
            }
        }
        void BorrarAutoridad(int SolicitudId, int AutoridadId)
        {
            BPAutoridad oBPAutoridad = new BPAutoridad();
            ENTAutoridad oENTAutoridad = new ENTAutoridad();
            ENTResponse oENTResponse = new ENTResponse();

            try
            {
                // Formulario
                oENTAutoridad.SolicitudId = SolicitudId;
                oENTAutoridad.AutoridadId = AutoridadId;

                // Transacción
                oENTResponse = oBPAutoridad.DeleteSolicitudAutoridad(oENTAutoridad);

                // Validaciones
                if (oENTResponse.GeneratesException) { throw new Exception(oENTResponse.sErrorMessage); }
                if (oENTResponse.sMessage != "") { throw new Exception(oENTResponse.sMessage); }

                // Recargar grid del listado de autoridades asociadas al expediente
                LlenarGridAutoridades(Convert.ToInt32(hddSolicitudId.Value));

                // Trasacción exitosa
                ScriptManager.RegisterStartupScript(this.Page, this.GetType(), Convert.ToString(Guid.NewGuid()), "alert('Autoridad eliminada con éxito');", true);

            }catch (Exception ex){
                throw (ex);
            }
        }