private void MostrarRolesAsignados(string usuarioSistema) { try { LIST_ROLES_SIS = null; rtvRolesDisponibles.Nodes.Clear(); rtvRolesAsignados.Nodes.Clear(); //Roles disponibles List <E.VMRol> roles = LIST_ROLES_SIS; //Roles asignados List <E.VMRol> rolesAsignados = new NegocioAdmin(sistema.USR_LOGIN, sistema.PASS).ObtenerRolesUsuario(usuarioSistema, Convert.ToInt32(ddlSistemas.SelectedItem.Value)); var rolesDisponibles = (from x in roles group x by x.IdPais into rolPais select new { idPais = rolPais.Key, roles = rolPais.ToList() }).ToList(); for (int i = 0; i < rolesDisponibles.Count(); i++) { RadTreeNode nodoPais = new RadTreeNode(rolesDisponibles[i].roles[0].Pais, rolesDisponibles[i].idPais.ToString()); nodoPais.AllowDrag = false; nodoPais.AllowDrop = false; foreach (E.VMRol rol in rolesDisponibles[i].roles) { if (rolesAsignados.Where(x => x.IdRol == rol.IdRol).FirstOrDefault() == null) { RadTreeNode nodoItem = new RadTreeNode(rol.Nombre, rol.IdRol.ToString()); nodoItem.Attributes.Add("Descripcion", rol.Descripcion); nodoItem.AllowDrag = true; nodoItem.AllowDrop = true; nodoPais.Nodes.Add(nodoItem); } } if (nodoPais.Nodes.Count > 0) { rtvRolesDisponibles.Nodes.Add(nodoPais); } } //Muestra roles asigandos var rolesUsuario = (from x in rolesAsignados group x by x.IdPais into rolPais select new { idPais = rolPais.Key, roles = rolPais.ToList() }).ToList(); for (int i = 0; i < rolesUsuario.Count(); i++) { RadTreeNode nodoPais = new RadTreeNode(rolesUsuario[i].roles[0].Pais, rolesUsuario[i].idPais.ToString()); nodoPais.AllowDrag = false; nodoPais.AllowDrop = false; foreach (E.VMRol rol in rolesUsuario[i].roles) { RadTreeNode nodoItem = new RadTreeNode(rol.Nombre, rol.IdRol.ToString()); nodoItem.Attributes.Add("Descripcion", rol.Descripcion); nodoItem.AllowDrag = true; nodoItem.AllowDrop = true; nodoPais.Nodes.Add(nodoItem); } rtvRolesAsignados.Nodes.Add(nodoPais); } rtvRolesDisponibles.ExpandAllNodes(); rtvRolesDisponibles.DataBind(); rtvRolesAsignados.ExpandAllNodes(); rtvRolesAsignados.DataBind(); lblNomUsuarioSel.InnerText = usuarioSistema; ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "openWinRoles", "openWinRoles()", true); } catch (Exception ex) { MostrarErrorRoles(ex.Message); } }