diff --git a/Business/Data/Usuario.cs b/Business/Data/Usuario.cs index af779a53..374e901c 100644 --- a/Business/Data/Usuario.cs +++ b/Business/Data/Usuario.cs @@ -36,6 +36,7 @@ public sealed class Usuario: Business.BaseDataAccess private bool m_externo; private string m_email; private string m_telefono; + private string m_tipoAutenticacion; #endregion #region Default ( Empty ) Class Constuctor @@ -63,7 +64,7 @@ public Usuario() m_externo = false; m_email= String.Empty; m_telefono = String.Empty; - + m_tipoAutenticacion = String.Empty; } @@ -93,7 +94,7 @@ public Usuario( m_requiereCambioPass = false; m_administrador = false; m_externo = false; - + m_tipoAutenticacion = String.Empty; } #endregion // End Required Fields Only Constructor @@ -429,24 +430,38 @@ public bool IsChanged get { return m_isChanged; } } - - #endregion + /// + /// + /// + public string TipoAutenticacion + { + get { return m_tipoAutenticacion; } + set + { + if (value != null && value.Length > 10) + throw new ArgumentOutOfRangeException("Invalid value for m_tipoAutenticacion", value, value.ToString()); - #region Metodos + m_isChanged |= (m_tipoAutenticacion != value); m_tipoAutenticacion = value; + } + } + #endregion + + + #region Metodos - #endregion + #endregion - //public bool esHemoterapia() - //{ - // var index=this.IdPerfil.Nombre.ToUpper().IndexOf("HEMOTERAPIA"); - // if (index > -1) return true; - // else return false; + //public bool esHemoterapia() + //{ + // var index=this.IdPerfil.Nombre.ToUpper().IndexOf("HEMOTERAPIA"); + // if (index > -1) return true; + // else return false; - //} + //} - } + } } diff --git a/Business/Data/Usuario.hbm.xml b/Business/Data/Usuario.hbm.xml index c0208ff7..85737535 100644 --- a/Business/Data/Usuario.hbm.xml +++ b/Business/Data/Usuario.hbm.xml @@ -27,7 +27,7 @@ - + diff --git a/WebLab/Protocolos/ProtocoloEdit2.aspx.cs b/WebLab/Protocolos/ProtocoloEdit2.aspx.cs index 9b1513ac..af2659a2 100644 --- a/WebLab/Protocolos/ProtocoloEdit2.aspx.cs +++ b/WebLab/Protocolos/ProtocoloEdit2.aspx.cs @@ -2069,7 +2069,7 @@ private void ImprimirCodigoBarrasAreas(Protocolo oProt, string s_listaAreas, str // ticket.AddSubHeaderLine("PRACTICAS SOLICITADAS"); // for (int i = 1; i <= cantidadFilas; i++) // { - // int l = i * 90; + // int td = i * 90; // analisis = analisis.Insert(l, "&"); // } diff --git a/WebLab/Usuarios/UsuarioEdit.aspx b/WebLab/Usuarios/UsuarioEdit.aspx index f3108e2e..3630cd23 100644 --- a/WebLab/Usuarios/UsuarioEdit.aspx +++ b/WebLab/Usuarios/UsuarioEdit.aspx @@ -3,20 +3,27 @@ <%@ Register assembly="Anthem" namespace="Anthem" tagprefix="anthem" %> - + + + + + + + + + + + - - - - - - - - - - + + + + + + }); + + @@ -40,7 +48,87 @@ height: 38px; } - + @@ -49,6 +137,8 @@ + +
@@ -125,6 +215,13 @@
+ + + Tipo Autenticacion: + + + + @@ -135,9 +232,11 @@ * - + + + Contraseña: @@ -147,6 +246,7 @@ * + @@ -156,7 +256,7 @@ - + <%-- Efector @@ -166,7 +266,7 @@ ErrorMessage="Efector" MaximumValue="999999" MinimumValue="1" Type="Integer" ValidationGroup="0">* - + --%> Area/Laboratorio: @@ -198,6 +298,7 @@ +
@@ -208,6 +309,18 @@ + + + + + + + + + + - - + <%-- + --%> + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - + - - - - - - - - - + + + + + + + + +
+ + + + + Regresar + -
+
@@ -299,4 +429,5 @@ +
\ No newline at end of file diff --git a/WebLab/Usuarios/UsuarioEdit.aspx.cs b/WebLab/Usuarios/UsuarioEdit.aspx.cs index 6a280c53..667cd7f5 100644 --- a/WebLab/Usuarios/UsuarioEdit.aspx.cs +++ b/WebLab/Usuarios/UsuarioEdit.aspx.cs @@ -1,8 +1,16 @@ -using System; +using Business; +using Business.Data; +using Business.Data.Laboratorio; +using CrystalDecisions.Shared; +using CrystalDecisions.Web; +using NHibernate; +using System; using System.Collections; +using System.Collections.Generic; using System.Configuration; using System.Data; -using System.Linq; +using System.Data.SqlClient; +using System.Text.RegularExpressions; using System.Web; using System.Web.Security; using System.Web.UI; @@ -10,12 +18,7 @@ using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; -using Business.Data; -using Business.Data.Laboratorio; -using Business; -using System.Data.SqlClient; -using CrystalDecisions.Shared; -using CrystalDecisions.Web; +using NHibernate.Expression; namespace WebLab.Usuarios { @@ -68,19 +71,14 @@ private void CargarListas() ddlPerfil.Items.Insert(0, new ListItem("Seleccione un perfil", "0")); m_ssql = @" SELECT idEfector, nombre FROM Sys_Efector (nolock) ORDER BY nombre "; - oUtil.CargarCombo(ddlEfector, m_ssql, "idEfector", "nombre"); - // ddlEfector.Items.Insert(0, new ListItem("Seleccione un efector", "0")); - ddlEfector.SelectedValue = oC.IdEfector.IdEfector.ToString(); - m_ssql = @" SELECT idArea, nombre FROM LAB_Area (nolock) where baja=0 ORDER BY nombre "; + oUtil.CargarListBox(ddlEfector3, m_ssql, "idEfector", "nombre"); + ddlEfector3.Items.Insert(0, new ListItem("Seleccione un efector", "0")); + ddlEfector3.Items.FindByValue("0").Selected = true; + m_ssql = @" SELECT idArea, nombre FROM LAB_Area (nolock) where baja=0 ORDER BY nombre "; oUtil.CargarCombo(ddlArea, m_ssql, "idArea", "nombre"); ddlArea.Items.Insert(0, new ListItem("Todas", "0")); - - m_ssql = @" SELECT idEfector, nombre FROM Sys_Efector (nolock) ORDER BY nombre "; - oUtil.CargarCombo(ddlEfector2, m_ssql, "idEfector", "nombre"); - ddlEfector2.Items.Insert(0, new ListItem("Seleccione un efector", "0")); - if (ConfigurationManager.AppSettings["tipoAutenticacion"].ToString() == "SSO") { chkRequiereContrasenia.Checked = false; @@ -90,6 +88,7 @@ private void CargarListas() } + #region Datos Generales private void MostrarDatos() { Usuario oRegistro = new Usuario(); @@ -103,8 +102,8 @@ private void MostrarDatos() txtPassword.Enabled = false; chkActivo.Checked = oRegistro.Activo; ddlPerfil.SelectedValue = oRegistro.IdPerfil.IdPerfil.ToString(); - ddlEfector.SelectedValue = oRegistro.IdEfector.IdEfector.ToString(); - ddlEfector.Enabled = false; + //ddlEfector.SelectedValue = oRegistro.IdEfector.IdEfector.ToString(); + //ddlEfector.Enabled = false; if (ddlPerfil.SelectedValue == "15") { CargarEfectorLabo(); @@ -127,43 +126,37 @@ private void MostrarDatos() oAuditor = (Usuario)oAuditor.Get(typeof(Usuario), int.Parse(Session["idUsuario"].ToString())); oAuditor.GrabaAuditoria("Consulta", oRegistro.IdUsuario, oRegistro.Username); - MostrarEfectores(); + MostrarEfectores(); + ddlTipoAutenticacion.SelectedValue = oRegistro.TipoAutenticacion.Trim(); + + habilitarPorAutenticacion(); } private void habilitarAdministrador() { if (chkAdministrador.Checked) { - ddlEfector.Enabled = false; - ddlEfector.SelectedValue = "227"; /// subsecretaria de salud ddlArea.Enabled = false; ddlPerfil.Enabled = false; ddlPerfil.SelectedValue = "2"; btnAgregarEfector.Enabled = false; - ddlEfector2.Enabled = false; } else { - if (Request["id"] == null) - { - ddlEfector.Enabled = true; - } ddlArea.Enabled = true; ddlPerfil.Enabled = true; btnAgregarEfector.Enabled = true; - ddlEfector2.Enabled = true; } - ddlEfector.UpdateAfterCallBack = true; ddlArea.UpdateAfterCallBack = true; ddlPerfil.UpdateAfterCallBack = true; - ddlEfector2.UpdateAfterCallBack = true; btnAgregarEfector.UpdateAfterCallBack = true; - } - protected void btnGuardar_Click(object sender, EventArgs e) - { + //Cuando uso Select para que se refleje el cambio en el combo se debe hacer por javascript + string script = string.Format("setAdministradorEfector({0});", chkAdministrador.Checked ? "true" : "false"); + + ScriptManager.RegisterStartupScript(this, this.GetType(), "adminSelect2", script, true); } @@ -178,7 +171,9 @@ private void Guardar(Usuario oRegistro) oPerfil = (Perfil)oPerfil.Get(typeof(Perfil), int.Parse(ddlPerfil.SelectedValue)); Efector oEfector = new Efector(); - oEfector = (Efector)oEfector.Get(typeof(Efector), int.Parse(ddlEfector.SelectedValue)); + + int idEfector = int.Parse((ViewState["efectores"] as DataTable).Rows[0]["idEfector"].ToString()); //Tomo el primero de la grilla + oEfector = (Efector)oEfector.Get(typeof(Efector), idEfector); Efector oEfectorDestino = new Efector(); if ((ddlEfectorDestino.SelectedValue != "0") && (ddlEfectorDestino.SelectedValue != "")) @@ -203,13 +198,21 @@ private void Guardar(Usuario oRegistro) oRegistro.Telefono = txtTelefono.Text; - if (accion != "Modifica") //no se modifica contrasñea + if (Request["id"] == null) //no se modifica contraseña { Utility oUtil = new Utility(); + string m_password = oUtil.Encrypt(txtPassword.Text); + + if (ddlTipoAutenticacion.SelectedValue == "ONELOGIN") + { + m_password = oUtil.Encrypt(txtUsername.Text); //La contraseña de ONELOGIN es el username + } oRegistro.Password = m_password; } + + if (oRegistro != null) { if ((oRegistro.Activo == true) && (chkActivo.Checked == false)) @@ -227,24 +230,16 @@ private void Guardar(Usuario oRegistro) oRegistro.RequiereCambioPass = chkRequiereContrasenia.Checked; oRegistro.IdUsuarioActualizacion = int.Parse(Session["idUsuario"].ToString()); oRegistro.FechaActualizacion = DateTime.Now; - + oRegistro.TipoAutenticacion = ddlTipoAutenticacion.SelectedValue; oRegistro.Save(); - if (Request["id"] == null) // NUEVO USUARIO - { - UsuarioEfector oUsuarioEfector = new UsuarioEfector(); - oUsuarioEfector.IdUsuario = oRegistro; - oUsuarioEfector.IdEfector = oEfector; - oUsuarioEfector.Activo = true; - oUsuarioEfector.Save(); - } Usuario oAuditor = new Usuario(); oAuditor = (Usuario)oAuditor.Get(typeof(Usuario), int.Parse(Session["idUsuario"].ToString())); oAuditor.GrabaAuditoria(accion, oRegistro.IdUsuario, oRegistro.Username); - + GuardarEfectores(oRegistro); } @@ -282,53 +277,9 @@ protected void chkAdministrador_CheckedChanged(object sender, EventArgs e) habilitarAdministrador(); } - - - private void AgregarEfector() - { - - UsuarioEfector oRegistro = new UsuarioEfector(); - Usuario oUsuario = new Usuario(); - Efector oEfector = new Efector(); - - oRegistro.IdUsuario = (Usuario)oUsuario.Get(typeof(Usuario), int.Parse(Request["id"].ToString())); - oRegistro.IdEfector = (Efector)oEfector.Get(typeof(Efector), int.Parse(ddlEfector2.SelectedValue.ToString())); - oRegistro.Activo = true; - oRegistro.Save(); - - - Usuario oAuditor = new Usuario(); - oAuditor = (Usuario)oAuditor.Get(typeof(Usuario), int.Parse(Session["idUsuario"].ToString())); - - oAuditor.GrabaAuditoria("Vincula " + ddlEfector2.SelectedItem.Text.TrimStart().TrimEnd(), oRegistro.IdUsuario.IdUsuario, oRegistro.IdUsuario.Username); - - - } - - protected void btnAgregarEfector_Click(object sender, EventArgs e) - { - if (Page.IsValid) - { - AgregarEfector(); - MostrarEfectores(); - - } - } - - - private void MostrarEfectores() + private DataTable LeerDatosEfector() { - ddlEfector2.SelectedValue = "0"; - - gvListaEfector.AutoGenerateColumns = false; - gvListaEfector.DataSource = LeerDatosEfector(); - gvListaEfector.DataBind(); - gvListaEfector.UpdateAfterCallBack = true; - } - - private object LeerDatosEfector() - { - string m_strSQL = @" SELECT IR.idUsuarioEfector, R.nombre as nombre + string m_strSQL = @" SELECT IR.idUsuarioEfector, R.nombre as nombre , R.idEfector FROM Sys_UsuarioEfector IR (nolock) INNER JOIN sys_efector R (nolock) ON R.idEfector=IR.idEfector WHERE IR.idUsuario=" + Request["id"].ToString(); @@ -345,54 +296,10 @@ INNER JOIN sys_efector R (nolock) ON R.idEfector=IR.idEfector return Ds.Tables[0]; } - protected void gvListaEfector_RowDataBound(object sender, GridViewRowEventArgs e) - { - if (e.Row.RowType == DataControlRowType.DataRow) - { - - - - ImageButton CmdEliminar = (ImageButton)e.Row.Cells[1].Controls[1]; - CmdEliminar.CommandArgument = this.gvListaEfector.DataKeys[e.Row.RowIndex].Value.ToString(); - CmdEliminar.CommandName = "Eliminar"; - CmdEliminar.ToolTip = "Eliminar"; - } - } - - protected void gvListaEfector_RowCommand(object sender, GridViewCommandEventArgs e) - { - if (e.CommandName != "Page") - { - switch (e.CommandName) - { - - case "Eliminar": - Eliminar(e.CommandArgument); - MostrarEfectores(); - break; - } - } - } - - private void Eliminar(object idItem) - { - UsuarioEfector oRegistro = new UsuarioEfector(); + - oRegistro = (UsuarioEfector)oRegistro.Get(typeof(UsuarioEfector), int.Parse(idItem.ToString())); - string s_efector = oRegistro.IdEfector.Nombre; - int iidusuario = oRegistro.IdUsuario.IdUsuario; - string s_username = oRegistro.IdUsuario.Username; - oRegistro.Delete(); - /////Auditoria - Usuario oAuditor = new Usuario(); - oAuditor = (Usuario)oAuditor.Get(typeof(Usuario), int.Parse(Session["idUsuario"].ToString())); - - oAuditor.GrabaAuditoria("DesVincula " + s_efector.TrimStart().TrimEnd(), iidusuario, s_username); - - } - protected void btnAuditoria_Click(object sender, EventArgs e) { if (Request["id"] != null) @@ -511,6 +418,12 @@ protected void ddlPerfil_SelectedIndexChanged(object sender, EventArgs e) { CargarEfectorLabo(); } + else + { + //Si habia algun valor seleccionado lo limpio + ddlEfectorDestino.SelectedValue = "0"; + } + ddlEfectorDestino.UpdateAfterCallBack = true; } private void CargarEfectorLabo() @@ -536,10 +449,270 @@ protected void customValidacionGeneral0_ServerValidate(object source, ServerVali if (txtUsername.Text.Trim().Length<6) { args.IsValid = false; + if (ddlTipoAutenticacion.SelectedValue == "SIL") + customValidacionGeneral0.ErrorMessage = "Usuario debe contener al menos 6 caracteres(letras o numeros)"; + else + customValidacionGeneral0.ErrorMessage = "Usuario debe contener al menos 6 numeros"; + return; } } + + private void habilitarPorAutenticacion() + { + if (ddlTipoAutenticacion.SelectedValue == "ONELOGIN") + { + //No se habilita “Requiere nueva contraseña al ingresar” + chkRequiereContrasenia.Enabled = false; + chkRequiereContrasenia.Checked = false; + //No se habilita “exclusivo Río Negro” + chkExterno.Enabled = false; + //Por defecto la contraseña es el username + txtPassword.Enabled = false; + rfvPassword.Enabled = false; + } + else + { + chkRequiereContrasenia.Enabled = true; + chkExterno.Enabled = true; + + //Se puede poner una contraseña + if (Request["id"] == null){ txtPassword.Enabled = true; rfvPassword.Enabled = true; } + else + txtPassword.Enabled = false; + } + + + } + protected void ddlTipoAutenticacion_SelectedIndexChanged(object sender, EventArgs e) + { + + habilitarPorAutenticacion(); + + } + + + protected void customValidacionGeneral1_ServerValidate1(object source, ServerValidateEventArgs args) + { + if (ddlTipoAutenticacion.SelectedValue == "ONELOGIN") + { + //El username debe ser un numero (numero de documento) no debe admitir letras ni caracteres especiales. + + bool validate = Regex.IsMatch(txtUsername.Text, @"^\d+$"); + if (!validate) + { + args.IsValid = false; + return; + } + } + } + + protected void customValidator_ServerValidate(object source, ServerValidateEventArgs args) + { + if (ddlTipoAutenticacion.SelectedValue == "ONELOGIN" && chkExterno.Checked) + { + customValidatorExterno.ErrorMessage = "Usuario ONLOGIN no puede ser “Exclusivo Río Negro”"; + args.IsValid = false; + return; + + } + } + + protected void customValidatorEfector_ServerValidate(object source, ServerValidateEventArgs args) + { + + + DataTable dt = ViewState["efectores"] as DataTable; + if(dt == null || dt.Rows.Count == 0) + { + args.IsValid = false; + this.customValidatorEfector.ErrorMessage = "Debe ingresar al menos un efector para el usuario"; + return; + } + } + + #endregion + + #region Efectores + + protected void gvListaEfector_RowDataBound(object sender, GridViewRowEventArgs e) + { + if (e.Row.RowType == DataControlRowType.DataRow) + { + ImageButton CmdEliminar = (ImageButton)e.Row.Cells[1].Controls[1]; + CmdEliminar.CommandArgument = this.gvListaEfector.DataKeys[e.Row.RowIndex].Value.ToString(); + CmdEliminar.CommandName = "Eliminar"; + CmdEliminar.ToolTip = "Eliminar"; + } + } + + protected void gvListaEfector_RowCommand(object sender, GridViewCommandEventArgs e) + { + if (e.CommandName != "Page") + { + switch (e.CommandName) + { + + case "Eliminar": + EliminarEfector(e.CommandArgument); + MostrarEfectores(); + break; + } + + } + } + + protected void btnAgregarEfector_Click(object sender, EventArgs e) + { + + if (Page.IsValid) + { + AgregarEfector(); + MostrarEfectores(); + + } + + } + + + private void AgregarEfector() + { + lblMensajeEfector.Visible = false; + if (ddlEfector3.SelectedValue != "0") + { + bool puedeAgregar = true; + + DataTable dt = ViewState["efectores"] as DataTable; + DataRow efectorEncontrado = dt.Rows.Find(ddlEfector3.SelectedValue); //Verifica si ya fue agregado el efctor + if (efectorEncontrado != null) + { + puedeAgregar = false; + } + + if (puedeAgregar) + { + dt.Rows.Add(0, ddlEfector3.SelectedItem.Text, ddlEfector3.SelectedValue); + ViewState["efectores"] = dt; + } + else + { + lblMensajeEfector.Visible = true; + lblMensajeEfector.Text = "Alerta: Efector ya ingresado para el usuario."; + + } + } + lblMensajeEfector.UpdateAfterCallBack = true; + } + + + + private void GuardarEfectores(Business.Data.Usuario oUsuario) + { + ///Eliminar los efectores y volverlos a crear + ISession m_session = NHibernateHttpModule.CurrentSession; + ICriteria crit = m_session.CreateCriteria(typeof(UsuarioEfector)); + crit.Add(Expression.Eq("IdUsuario", oUsuario)); + IList lista = crit.List(); + + + foreach (UsuarioEfector oUsuarioEfector in lista) + { + oUsuarioEfector.Delete(); + } + + //los genero nuevamente + DataTable dt = ViewState["efectores"] as DataTable; + if (dt != null || dt.Rows.Count > 0) + { + foreach (DataRow row in dt.Rows) + { + UsuarioEfector oRegistro = new UsuarioEfector(); + int idEfector = int.Parse(row["idEfector"].ToString()); + Efector oEfector = new Efector(); + oEfector = (Efector)oEfector.Get(typeof(Efector), idEfector); + oRegistro.IdUsuario = oUsuario; + oRegistro.IdEfector = oEfector; + oRegistro.Activo = true; + oRegistro.Save(); + Usuario oAuditor = new Usuario(); + oAuditor = (Usuario)oAuditor.Get(typeof(Usuario), int.Parse(Session["idUsuario"].ToString())); + oAuditor.GrabaAuditoria("Vincula " + oEfector.Nombre, oRegistro.IdUsuario.IdUsuario, oRegistro.IdUsuario.Username); + } + } + } + private void MostrarEfectores() + { + DataTable dt; + if (ViewState["efectores"] == null) + { + dt = LeerDatosEfector(); + dt.PrimaryKey = new DataColumn[] { dt.Columns["idEfector"] }; //le asigno clave primaria para despues poder buscar por este valor + ViewState["efectores"] = dt; + } + else + dt = ViewState["efectores"] as DataTable; + + gvListaEfector.AutoGenerateColumns = false; + gvListaEfector.DataSource = dt; + gvListaEfector.DataBind(); + gvListaEfector.UpdateAfterCallBack = true; + + } + + + private void EliminarEfector(object idEfector) + { + bool puedeEliminar = true; + + lblMensajeEfector.Visible = false; + DataTable dt = ViewState["efectores"] as DataTable; + if(dt.Rows.Count > 1) + { + if (Request["id"] != null) + { + DataRow dr = dt.Rows.Find(idEfector); //Me traigo la fila para traer el idUsuarioEfector + int idUsuarioEfector = int.Parse(dr["idUsuarioEfector"].ToString()); + + if(idUsuarioEfector != 0) + { + UsuarioEfector oRegistro = new UsuarioEfector(); + oRegistro = (UsuarioEfector)oRegistro.Get(typeof(UsuarioEfector), idUsuarioEfector); + + if (oRegistro != null) + { + string s_efector = oRegistro.IdEfector.Nombre; + string s_username = oRegistro.IdUsuario.Username; + oRegistro.Delete(); + /////Auditoria + Usuario oAuditor = new Usuario(); + oAuditor = (Usuario)oAuditor.Get(typeof(Usuario), int.Parse(Session["idUsuario"].ToString())); + oAuditor.GrabaAuditoria("DesVincula " + s_efector.TrimStart().TrimEnd(), int.Parse(Request["id"].ToString()), s_username); + } + } //else: esta solo en la visualizacion pero no en la base de datos + + } + + } + else + { + lblMensajeEfector.Visible = true; + lblMensajeEfector.Text = "Alerta: Debe tener al menos 1 efector asociado"; + lblMensajeEfector.UpdateAfterCallBack = true; + puedeEliminar = false; + } + + if (puedeEliminar) //lo borro del viewstate para mantener consistencia con lo que se va a guardar en la base + { + DataRow efectorEliminar = dt.Rows.Find(idEfector); //Lo busco para eliminarlo + dt.Rows.Remove(efectorEliminar); + ViewState["efectores"] = dt; + } + + } + #endregion + + } } diff --git a/WebLab/Usuarios/UsuarioEdit.aspx.designer.cs b/WebLab/Usuarios/UsuarioEdit.aspx.designer.cs index 16e26a7c..c8aa66c9 100644 --- a/WebLab/Usuarios/UsuarioEdit.aspx.designer.cs +++ b/WebLab/Usuarios/UsuarioEdit.aspx.designer.cs @@ -1,312 +1,350 @@ //------------------------------------------------------------------------------ -// -// This code was generated by a tool. +// +// Este código fue generado por una herramienta. // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// +// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si +// se vuelve a generar el código. +// //------------------------------------------------------------------------------ -namespace WebLab.Usuarios { - - - public partial class UsuarioEdit { - +namespace WebLab.Usuarios +{ + + + public partial class UsuarioEdit + { + /// - /// HFCurrTabIndex control. + /// Control HFCurrTabIndex. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.HiddenField HFCurrTabIndex; - + /// - /// txtApellido control. + /// Control txtApellido. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.TextBox txtApellido; - + /// - /// rfvApellido control. + /// Control rfvApellido. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.RequiredFieldValidator rfvApellido; - + /// - /// txtNombre control. + /// Control txtNombre. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.TextBox txtNombre; - + /// - /// rfvNombre control. + /// Control rfvNombre. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.RequiredFieldValidator rfvNombre; - + /// - /// txtFirmaValidacion control. + /// Control txtFirmaValidacion. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.TextBox txtFirmaValidacion; - + /// - /// email control. + /// Control email. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.HtmlControls.HtmlInputGenericControl email; - + /// - /// txtTelefono control. + /// Control txtTelefono. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.TextBox txtTelefono; - + /// - /// txtUsername control. + /// Control ddlTipoAutenticacion. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.TextBox txtUsername; - + protected global::System.Web.UI.WebControls.DropDownList ddlTipoAutenticacion; + /// - /// rfvUsuario control. + /// Control txtUsername. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.RequiredFieldValidator rfvUsuario; - + protected global::System.Web.UI.WebControls.TextBox txtUsername; + /// - /// customValidacionGeneral control. + /// Control rfvUsuario. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.CustomValidator customValidacionGeneral; - + protected global::System.Web.UI.WebControls.RequiredFieldValidator rfvUsuario; + /// - /// customValidacionGeneral0 control. + /// Control customValidacionGeneral. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.CustomValidator customValidacionGeneral0; - + protected global::System.Web.UI.WebControls.CustomValidator customValidacionGeneral; + /// - /// txtPassword control. + /// Control customValidacionGeneral0. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.TextBox txtPassword; - + protected global::System.Web.UI.WebControls.CustomValidator customValidacionGeneral0; + /// - /// rfvPassword control. + /// Control customValidacionGeneral1. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.RequiredFieldValidator rfvPassword; - + protected global::System.Web.UI.WebControls.CustomValidator customValidacionGeneral1; + /// - /// chkAdministrador control. + /// Control txtPassword. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::Anthem.CheckBox chkAdministrador; - + protected global::System.Web.UI.WebControls.TextBox txtPassword; + /// - /// ddlEfector control. + /// Control rfvPassword. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::Anthem.DropDownList ddlEfector; - + protected global::System.Web.UI.WebControls.RequiredFieldValidator rfvPassword; + /// - /// rvEfector control. + /// Control chkAdministrador. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::Anthem.RangeValidator rvEfector; - + protected global::Anthem.CheckBox chkAdministrador; + /// - /// ddlArea control. + /// Control ddlArea. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::Anthem.DropDownList ddlArea; - + /// - /// ddlPerfil control. + /// Control ddlPerfil. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::Anthem.DropDownList ddlPerfil; - + /// - /// rvPerfil control. + /// Control rvPerfil. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::Anthem.RangeValidator rvPerfil; - + /// - /// ddlEfectorDestino control. + /// Control ddlEfectorDestino. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::Anthem.DropDownList ddlEfectorDestino; - + /// - /// rvEfectorDestino control. + /// Control rvEfectorDestino. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::Anthem.RangeValidator rvEfectorDestino; - + /// - /// chkActivo control. + /// Control chkActivo. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.CheckBox chkActivo; - + /// - /// chkExterno control. + /// Control chkExterno. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.CheckBox chkExterno; - + /// - /// chkRequiereContrasenia control. + /// Control chkRequiereContrasenia. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.CheckBox chkRequiereContrasenia; - + + /// + /// Control customValidatorExterno. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::System.Web.UI.WebControls.CustomValidator customValidatorExterno; + + /// + /// Control customValidatorEfector. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::System.Web.UI.WebControls.CustomValidator customValidatorEfector; + /// - /// lnkRegresar control. + /// Control lnkRegresar. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.LinkButton lnkRegresar; - + /// - /// btnGuardar control. + /// Control btnGuardar. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Button btnGuardar; - + /// - /// ValidationSummary1 control. + /// Control ValidationSummary1. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary1; - + /// - /// btnAuditoria control. + /// Control btnAuditoria. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Button btnAuditoria; - + /// - /// btnBlanquear control. + /// Control btnBlanquear. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Button btnBlanquear; - + /// - /// ddlEfector2 control. + /// Control ddlEfector3. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::Anthem.DropDownList ddlEfector2; - + protected global::System.Web.UI.WebControls.ListBox ddlEfector3; + /// - /// btnAgregarEfector control. + /// Control btnAgregarEfector. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::Anthem.Button btnAgregarEfector; - + /// - /// gvListaEfector control. + /// Control lblMensajeEfector. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::Anthem.Label lblMensajeEfector; + + /// + /// Control gvListaEfector. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::Anthem.GridView gvListaEfector; + + /// + /// Control lnkRegresar1. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::System.Web.UI.WebControls.LinkButton lnkRegresar1; } } diff --git a/WebLab/Usuarios/UsuarioList.aspx b/WebLab/Usuarios/UsuarioList.aspx index 443e7206..119a870b 100644 --- a/WebLab/Usuarios/UsuarioList.aspx +++ b/WebLab/Usuarios/UsuarioList.aspx @@ -2,125 +2,184 @@ - - + + + + + -
-
-
-

USUARIOS -

-
-
- -
-

Efector:

-
-
- - +
+ + + + +
+
+ +
+

USUARIOS +

+
+
+ + + + + + + + + + + + - + + + + + + + + + + + + + + - - - Exportar a Excel + + + +
Efector: + + Perfil: + +
Username: Tipo Autenticacion: + + + + +
Nombre: Apellido: +
Habilitados: + + + +
+ + Exportar a Excel    +    + + +
+ + -
- + +
+ +
+
+ - - - - - - \ No newline at end of file diff --git a/WebLab/Usuarios/UsuarioList.aspx.cs b/WebLab/Usuarios/UsuarioList.aspx.cs index 039e1a1c..e10eefb3 100644 --- a/WebLab/Usuarios/UsuarioList.aspx.cs +++ b/WebLab/Usuarios/UsuarioList.aspx.cs @@ -102,26 +102,49 @@ private void CargarListas() oUtil.CargarCombo(ddlEfector, m_ssql, "idEfector", "nombre"); if (nivelcentral) ddlEfector.Items.Insert(0, new ListItem("Todos", "0")); - + + m_ssql = @"SELECT idPerfil, nombre FROM Sys_Perfil with (nolock) ORDER BY nombre"; + oUtil.CargarCombo(ddlPerfil, m_ssql, "idPerfil", "nombre"); + ddlPerfil.Items.Insert(0, new ListItem("Todos", "0")); + } private void CargarGrilla() { gvLista.AutoGenerateColumns = false; gvLista.DataSource = LeerDatos(); gvLista.DataBind(); + CurrentPageLabel.Text = "Página " + (gvLista.PageIndex+1) + " de " + gvLista.PageCount.ToString(); } private object LeerDatos() { string m_strSQL = @"SELECT U.idUsuario, U.apellido, U.nombre, U.username, P.nombre AS perfil, E.nombre as efector , -case when U.activo=1 then 'Si' else 'No' end as habilitado, U.activo as activo +case when U.activo=1 then 'Si' else 'No' end as habilitado, U.activo as activo , tipoAutenticacion FROM Sys_Usuario AS U (nolock) INNER JOIN Sys_Perfil AS P (nolock) ON U.idPerfil = P.idPerfil inner join Sys_UsuarioEfector UE (nolock) on Ue.idusuario= U.idUsuario inner join - sys_efector as E (nolock) on Ue.idEfector= E.idEfector"; + sys_efector as E (nolock) on Ue.idEfector= E.idEfector + where 1=1 "; if (ddlEfector.SelectedValue != "0") - m_strSQL += " where E.idEfector=" + ddlEfector.SelectedValue.ToString(); + m_strSQL += " and E.idEfector=" + ddlEfector.SelectedValue.ToString(); + + if (ddlPerfil.SelectedValue != "0") + m_strSQL += " and P.idPerfil=" + ddlPerfil.SelectedValue.ToString(); + if (ddlTipoAutenticacion.SelectedValue != "0") + m_strSQL += " and tipoAutenticacion='" + ddlTipoAutenticacion.SelectedValue.ToString()+"'"; + if (ddlHabilitados.SelectedValue != "0") + if(ddlHabilitados.SelectedValue == "1") m_strSQL += " and U.activo=1"; + else m_strSQL += " and U.activo=0"; + + if (txtUsername.Text != "") + m_strSQL += " and U.username LIKE '%" + txtUsername.Text + "%'"; + if (txtNombre.Text != "") + m_strSQL += " and U.nombre LIKE '%" + txtNombre.Text +"%'"; + if (txtApellido.Text != "") + m_strSQL += " and U.apellido LIKE '%" + txtApellido.Text +"%'"; + + m_strSQL += " order by username"; @@ -133,8 +156,8 @@ Sys_UsuarioEfector UE (nolock) on Ue.idusuario= U.idUsuario inner join SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = new SqlCommand(m_strSQL, conn); adapter.Fill(Ds); - - + CantidadRegistros.Text = Ds.Tables[0].Rows.Count.ToString() + " registros encontrados"; + return Ds.Tables[0]; } @@ -180,7 +203,7 @@ protected void gvLista_RowDataBound(object sender, GridViewRowEventArgs e) if (e.Row.RowType == DataControlRowType.DataRow) { - ImageButton CmdModificar = (ImageButton)e.Row.Cells[6].Controls[1]; + ImageButton CmdModificar = (ImageButton)e.Row.Cells[7].Controls[1]; CmdModificar.CommandArgument = this.gvLista.DataKeys[e.Row.RowIndex].Value.ToString(); CmdModificar.CommandName = "Modificar"; @@ -243,16 +266,30 @@ protected void lnkExcel_Click(object sender, EventArgs e) private DataTable LeerDatosExcel() { - string m_strFiltro = ""; + string m_strFiltro = "1=1 "; DataSet Ds = new DataSet(); // SqlConnection conn = (SqlConnection)NHibernateHttpModule.CurrentSession.Connection; SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SIL_ReadOnly"].ConnectionString); ///Performance: conexion de solo lectura SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.StoredProcedure; if (ddlEfector.SelectedValue != "0") - m_strFiltro = " E.idEfector=" + ddlEfector.SelectedValue.ToString(); + m_strFiltro += " AND E.idEfector=" + ddlEfector.SelectedValue.ToString(); + if (ddlPerfil.SelectedValue != "0") + m_strFiltro += " and P.idPerfil=" + ddlPerfil.SelectedValue.ToString(); + if (ddlTipoAutenticacion.SelectedValue != "0") + m_strFiltro += " and tipoAutenticacion='" + ddlTipoAutenticacion.SelectedValue.ToString() + "'"; + if (ddlHabilitados.SelectedValue != "0") + if (ddlHabilitados.SelectedValue == "1") m_strFiltro += " and U.activo=1"; + else m_strFiltro += " and U.activo=0"; + + if (txtUsername.Text != "") + m_strFiltro += " and U.username LIKE '%" + txtUsername.Text + "%'"; + if (txtNombre.Text != "") + m_strFiltro += " and U.nombre LIKE '%" + txtNombre.Text + "%'"; + if (txtApellido.Text != "") + m_strFiltro += " and U.apellido LIKE '%" + txtApellido.Text + "%'"; cmd.CommandText = "[LAB_ListaUsuarios]"; @@ -300,5 +337,40 @@ private void dataTableAExcel(DataTable tabla, string nombreArchivo) Response.End(); } } + + protected void btnBuscar_Click(object sender, EventArgs e) + { + CargarGrilla(); + } + + protected void ddlPerfil_SelectedIndexChanged(object sender, EventArgs e) + { + CargarGrilla(); + } + + + + protected void gvLista_PageIndexChanging(object sender, GridViewPageEventArgs e) + { + if (Session["idUsuario"] != null) + { + gvLista.PageIndex = e.NewPageIndex; + int currentPage = gvLista.PageIndex + 1; + CurrentPageLabel.Text = "Página " + currentPage.ToString() + " de " + gvLista.PageCount.ToString(); + CargarGrilla(); + } + else + Response.Redirect("../FinSesion.aspx", false); + } + + protected void ddlTipoAutenticacion_SelectedIndexChanged(object sender, EventArgs e) + { + CargarGrilla(); + } + + protected void ddlHabilitados_SelectedIndexChanged(object sender, EventArgs e) + { + CargarGrilla(); + } } } diff --git a/WebLab/Usuarios/UsuarioList.aspx.designer.cs b/WebLab/Usuarios/UsuarioList.aspx.designer.cs index c6d3ef5f..c6ffaec1 100644 --- a/WebLab/Usuarios/UsuarioList.aspx.designer.cs +++ b/WebLab/Usuarios/UsuarioList.aspx.designer.cs @@ -1,50 +1,151 @@ //------------------------------------------------------------------------------ -// -// This code was generated by a tool. +// +// Este código fue generado por una herramienta. // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// +// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si +// se vuelve a generar el código. +// //------------------------------------------------------------------------------ -namespace WebLab.Usuarios { - - - public partial class UsuarioList { - +namespace WebLab.Usuarios +{ + + + public partial class UsuarioList + { + + /// + /// Control pnlTitulo. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::System.Web.UI.HtmlControls.HtmlGenericControl pnlTitulo; + /// - /// ddlEfector control. + /// Control ddlEfector. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.DropDownList ddlEfector; - + /// - /// btnAgregar control. + /// Control ddlPerfil. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// - protected global::System.Web.UI.WebControls.Button btnAgregar; - + protected global::System.Web.UI.WebControls.DropDownList ddlPerfil; + + /// + /// Control txtUsername. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::System.Web.UI.WebControls.TextBox txtUsername; + /// - /// lnkExcel control. + /// Control ddlTipoAutenticacion. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlTipoAutenticacion; + + /// + /// Control txtNombre. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::System.Web.UI.WebControls.TextBox txtNombre; + + /// + /// Control txtApellido. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::System.Web.UI.WebControls.TextBox txtApellido; + + /// + /// Control ddlHabilitados. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlHabilitados; + + /// + /// Control lnkExcel. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.LinkButton lnkExcel; - + + /// + /// Control btnBuscar. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::System.Web.UI.WebControls.Button btnBuscar; + + /// + /// Control btnAgregar. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::System.Web.UI.WebControls.Button btnAgregar; + + /// + /// Control pnlLista. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::System.Web.UI.WebControls.Panel pnlLista; + + /// + /// Control CantidadRegistros. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::System.Web.UI.WebControls.Label CantidadRegistros; + + /// + /// Control CurrentPageLabel. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::System.Web.UI.WebControls.Label CurrentPageLabel; + /// - /// gvLista control. + /// Control gvLista. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.GridView gvLista; } diff --git a/WebLab/WebLab.csproj b/WebLab/WebLab.csproj index ca1485e1..68e941f1 100644 --- a/WebLab/WebLab.csproj +++ b/WebLab/WebLab.csproj @@ -2013,24 +2013,6 @@ - - - - - - - - - - - - - - - - - - @@ -2719,6 +2701,7 @@ + diff --git a/WebLab/script/select2.custom.css b/WebLab/script/select2.custom.css new file mode 100644 index 00000000..aa8eb144 --- /dev/null +++ b/WebLab/script/select2.custom.css @@ -0,0 +1,178 @@ +/* ========================================================= + SELECT2 CUSTOM FIX + Compatible: + - Bootstrap 3 + - Select2 v3.x + - ASP.NET WebForms + - jQuery UI 1.8.x + ========================================================= */ + + +/* =============================== + CONTENEDOR GENERAL + =============================== */ + +.select2-container { + width: 100% !important; + font-size: 14px; +} + + + /* =============================== + CAJA VISIBLE (INPUT) + =============================== */ + + .select2-container .select2-choice { + height: 34px !important; + line-height: 34px !important; + padding: 0 30px 0 12px !important; + border-radius: 4px !important; + box-sizing: border-box; + } + + +/* =============================== + TEXTO SELECCIONADO + =============================== */ + +.select2-chosen { + display: block !important; + width: 100% !important; + overflow: hidden !important; + text-overflow: ellipsis !important; + white-space: nowrap !important; +} + + +/* =============================== + FLECHA DERECHA + =============================== */ + +.select2-container .select2-choice .select2-arrow { + height: 34px !important; +} + + +/* =============================== + BUSCADOR INTERNO + =============================== */ + +.select2-search input { + height: 28px !important; + box-sizing: border-box; +} + + +/* =============================== + DROPDOWN RESULTADOS + =============================== */ + +.select2-drop { + font-size: 14px; +} + + +/* =============================== + ITEMS RESULTADOS + =============================== */ + +.select2-results .select2-result-label { + padding: 6px 10px; +} + + +/* =============================== + ESTADO DISABLED + =============================== */ + +.select2-container.select2-container-disabled .select2-choice { + background-color: #eeeeee !important; + cursor: not-allowed; +} +.select2-disabled { + pointer-events: none !important; /* bloquea interacción */ + opacity: 0.6 !important; /* aspecto deshabilitado */ +} + + /* cursor y flecha en apariencia de no permitido */ + .select2-disabled .select2-choice { + cursor: not-allowed !important; + } + + .select2-disabled .select2-choice .select2-arrow { + pointer-events: none !important; + } + +/* =============================== + EVITA SALTOS DE TAMAÑO + =============================== */ + +.select2-container, +.select2-choice, +.select2-chosen { + max-width: 100% !important; +} + + +/* =============================== + CORRECCIÓN BOOTSTRAP 3 + =============================== */ + +.form-control + .select2-container { + width: 100% !important; +} + + +/* =============================== + TOOLTIP NATIVO (OPCIONAL) + =============================== */ + +.select2-chosen { + cursor: default; +} + + +/* =============================== + FIX ANTIGUO SELECT2 V3 + evita recalculo de ancho + =============================== */ + +.select2-container .select2-choice > .select2-chosen { + margin-right: 26px !important; +} + + +/* ========================================================= + FIX ESPECÍFICO: ddlEfector3 (ClientIDMode="Static") + Forzar ancho fijo para evitar cambios al escribir/seleccionar + ========================================================= */ + +/* Ajusta este valor al ancho que quieras (200px según tu markup) */ +#s2id_ddlEfector3.select2-container, +#ddlEfector3 + .select2-container { + width: 500px !important; + min-width: 500px !important; + max-width: 500px !important; +} + + /* Asegura que la caja visible y el texto interno respeten el ancho fijo */ + #s2id_ddlEfector3 .select2-choice, + #ddlEfector3 + .select2-container .select2-choice { + width: 100% !important; + box-sizing: border-box; + } + + /* Limita el ancho del texto seleccionado para que no empuje elementos */ + #s2id_ddlEfector3 .select2-chosen, + #ddlEfector3 + .select2-container .select2-chosen { + max-width: calc(100% - 36px) !important; /* deja espacio para flecha/clear */ + overflow: hidden !important; + text-overflow: ellipsis !important; + white-space: nowrap !important; + } + +/* Asegura ancho fijo del dropdown (por si se renderiza fuera del contenedor) */ +.select2-drop { + min-width: 500px !important; +} + diff --git a/WebLabResultados/WebLabResultados.csproj b/WebLabResultados/WebLabResultados.csproj index 93b6b3a2..3cf9890a 100644 --- a/WebLabResultados/WebLabResultados.csproj +++ b/WebLabResultados/WebLabResultados.csproj @@ -371,47 +371,16 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Web.config