private DataTable FiltrarRol(string nombreRol, string nombreFuncionalidad, string estado) { DataTable tabla_rol = DAORol.obtenerTabla(); DataTable tabla_func = DAOFuncionalidad.obtenerPorRolTable(nombreRol); var final_rol = ""; var posFiltro = true; var filtrosBusqueda = new List <string>(); if (nombreRol != "") { filtrosBusqueda.Add("nombreRol LIKE '%" + nombreRol + "%'"); } if (estado != null) { if (estado == "Activo") { filtrosBusqueda.Add("estado = 1"); } else { filtrosBusqueda.Add("estado = 0"); } } foreach (var filtro in filtrosBusqueda) { if (!posFiltro) { final_rol += " AND " + filtro; } else { final_rol += filtro; posFiltro = false; } } //Rearmar bool noTengoFuncionalidad = true; if (tabla_rol != null) { if (nombreFuncionalidad != null && tabla_func != null) { int i = 0; while (i < tabla_rol.Rows.Count) { string rol = Convert.ToString(tabla_rol.Rows[i]["nombreRol"]); foreach (DataRow row2 in tabla_func.Rows) { if (rol == Convert.ToString(row2["nombreRol"])) { if (Convert.ToString(row2["descripcion"]) == nombreFuncionalidad) { noTengoFuncionalidad = false; } } } if (noTengoFuncionalidad) { tabla_rol.Rows.RemoveAt(i); } else { i++; } noTengoFuncionalidad = true; } } tabla_rol.DefaultView.RowFilter = final_rol; } return(tabla_rol); }