private DataTable FiltrarUsuario(string usr, string nombre, string apellido, string rol) { DataTable tabla_usuario = DAOUsuario.obtenerTabla(usr); var final_usuario = ""; var posFiltro = true; var filtrosBusqueda = new List <string>(); if (usr != "") { filtrosBusqueda.Add("usr LIKE '%" + usr + "%'"); } if (nombre != "") { filtrosBusqueda.Add("nombre LIKE '%" + nombre + "%'"); } if (apellido != "") { filtrosBusqueda.Add("apellido LIKE '%" + apellido + "%'"); } if (rol != "") { List <Rol> tabla_rol = DAORol.obtenerRolesDeUsuario(rol); if (tabla_rol.Count > 0) { bool hayMasFiltros = false; if (filtrosBusqueda.Count != 0) { hayMasFiltros = true; } string filtro_rol = ""; if (hayMasFiltros) { filtro_rol += "("; } filtro_rol += ("usr = '******'"); for (int i = 1; i < tabla_rol.Count; i++) { filtro_rol += " OR "; filtro_rol += ("usr = '******'"); } if (hayMasFiltros) { filtro_rol += ")"; } filtrosBusqueda.Add(filtro_rol); } } //Concatena hasta formar la consulta para filtrar foreach (var filtro in filtrosBusqueda) { if (!posFiltro) { final_usuario += " AND " + filtro; } else { final_usuario += filtro; posFiltro = false; } } //Filtra las columnas tabla_usuario.DefaultView.RowFilter = final_usuario; //Devuelve la tabla filtradra return(tabla_usuario); }