none
Mostrar checkbox en datagridview si existe RRS feed

  • Pregunta

  • Hola como va estoy realizando un formulario de asignación de reglas a los perfiles y lo guardo en una tabla lo hago de esta forma

    foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    int pid= Convert.ToInt32(cmbPerfil.SelectedValue);
                    int rid= Convert.ToInt32(row.Cells[2].Value);
                    var existe = dbcontext.TransPerfilesReglas.Any(x => x.PerfilId == pid && x.ReglaId == rid);
                    if (Convert.ToBoolean(row.Cells[Asignado.Name].Value) == true)
                    {
                        
                        if (existe)
                        {
    
                        }else
                        {
                            TransPerfilesReglas pr = new TransPerfilesReglas();
                            pr.PerfilId = pid;
                            pr.ReglaId = rid;
    
                            dbcontext.TransPerfilesReglas.Add(pr);
                            dbcontext.SaveChanges();
                        }
    
                    }
                    else
                    {
                        if (existe)
                        {
                            var query = (from p in dbcontext.TransPerfilesReglas
                                         where p.PerfilId == pid && p.ReglaId==rid
                                         select p).Single();
    
                            dbcontext.TransPerfilesReglas.Remove(query);
                            dbcontext.SaveChanges();
                        }
                    }
                }
    El perfil lo cargo en un combobox y las reglas en un datagridview y el código de arriba funciona bien para agregar o eliminar asignaciones lo que me esta rompiendo la cabeza es ahora en un botón buscar después de elegir el perfil que me muestre en los checkbox del grid si esta la regla marcar verdadero y si no esta marcar falso para la visualización de las reglas asignadas desde ya gracias

    domingo, 27 de noviembre de 2016 16:01

Respuestas

  • EnzoTuc40,

    Entendiendo que tienes una entidad llamada 'Reglas' o algo similar puedes intentar combinar las filas para definir las reglas aplicadas y no aplicadas para un determinado perfil:

    int pid = Convert.ToInt32(cmbPerfil.SelectedValue);
    
    var listaReglas =
    	from r in dbcontext.reglas
    	join t in dbcontext.transPerfilesReglas on r.ReglaId equals t.ReglaId into x
    	from reg in x.Where(t => t.PerfilId == pid).DefaultIfEmpty()
    	select new { Asignado = reg == null ? false : true, Regla = r.Regla };
    
    dgvReglas.DataSource = listaReglas.ToList();


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta EnzoTuc40 domingo, 27 de noviembre de 2016 19:03
    domingo, 27 de noviembre de 2016 16:46

Todas las respuestas

  • EnzoTuc40,

    Entendiendo que tienes una entidad llamada 'Reglas' o algo similar puedes intentar combinar las filas para definir las reglas aplicadas y no aplicadas para un determinado perfil:

    int pid = Convert.ToInt32(cmbPerfil.SelectedValue);
    
    var listaReglas =
    	from r in dbcontext.reglas
    	join t in dbcontext.transPerfilesReglas on r.ReglaId equals t.ReglaId into x
    	from reg in x.Where(t => t.PerfilId == pid).DefaultIfEmpty()
    	select new { Asignado = reg == null ? false : true, Regla = r.Regla };
    
    dgvReglas.DataSource = listaReglas.ToList();


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta EnzoTuc40 domingo, 27 de noviembre de 2016 19:03
    domingo, 27 de noviembre de 2016 16:46
  • Excelente !!!!! Gracias Wiliams
    domingo, 27 de noviembre de 2016 19:04