none
Dudas con CheckBoxList RRS feed

  • Pregunta

  • Hola amigos,

    tengo una duda existencial y me gustaría que ustedes me pudiesen guiar.

    resulta que estoy intentando configurar el DataTextField y DataValueField de un checkboxList que esta alimentado por una Lista Genérica de una Clase Llamada Asistente y que a su vez contiene a un objeto usuario.  

    El tema puntual es que se cae justo en el DataBind() indicando de que los parametros pasados al DataTextField y DataValueField no existen. Intente con "usuario.NombreCompleto" y directamente con "NombreCompleto" y no me funcionan.

    Aquí la composición de las clases

     public  class Asistentes
        {   public  Asistentes() {}
            public Usuario usuario { get; set; }
            public bool Asiste { get; set; }
        }
    
        public class Usuario
        {
            public int idUsuario { get; set;  }
            public string Nombre { get ; set; }
            public string ApellidoPaterno { get; set; }
            public string ApellidoMaterno { get; set; }
            public Estado Estado { get; set; }
            private string _NombreCompleto;
            public string NombreUsuario { get; set; }
            public UsuariosCargo CargoEnum { get; set; }
            public List<UsuarioCargo> Cargos { get; set; }
            public string Email { get; set; }
    
            public string NombreCompleto
            {
                get
                {
                    _NombreCompleto = Nombre + " " + ApellidoPaterno;
    
                    return _NombreCompleto;
                }
    
                set
                {
                    _NombreCompleto = value;
                }
            }
        }
    

    y de esta manera las cargo. 

    List<Usuario> lstUsuario = NegUsuario.GetList(Estado.Habilitado, UsuariosCargo.Vendedor);
    
                    List<Asistentes> lst = new List<Asistentes>();
    
                    foreach (Usuario u in lstUsuario)
    	{
                        Asistentes a = new Asistentes();
                        a.usuario = u;
    
                        if (a.usuario.idUsuario == 14)
                        {
                            a.Asiste = true;
                        }else
                        {
                            a.Asiste = false;
                        }
    
                        lst.Add(a);
                      
        }
                
                    LstAsistentes.DataSource = lst;
                    
                    LstAsistentes.DataBind();
     }
    

    Les pido de su ayuda por favor. 


    Si la respuesta te ayuda, pues márcala como respuesta y vota. Saludos desde Santiago de Chile.

    jueves, 30 de noviembre de 2017 20:14

Respuestas

  • hola

    lo que veo es que intentas bindear una entidad compleja al tener el usuario como propiedad

    quizas debas asignar el DataMember

    LstAsistentes.DataMember = "usuario";
    LstAsistentes.DataTextField = "NombreCompleto";
    LstAsistentes.DataValueField = "idUsuario";
    
    LstAsistentes.DataSource = lst;
    LstAsistentes.DataBind();

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 30 de noviembre de 2017 22:18

Todas las respuestas

  • hola

    lo que veo es que intentas bindear una entidad compleja al tener el usuario como propiedad

    quizas debas asignar el DataMember

    LstAsistentes.DataMember = "usuario";
    LstAsistentes.DataTextField = "NombreCompleto";
    LstAsistentes.DataValueField = "idUsuario";
    
    LstAsistentes.DataSource = lst;
    LstAsistentes.DataBind();

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 30 de noviembre de 2017 22:18
  • Gracias Leandro,

    modifico segun lo sugerido y sucede lo mismo. 


    Si la respuesta te ayuda, pues márcala como respuesta y vota. Saludos desde Santiago de Chile.

    jueves, 30 de noviembre de 2017 22:51
  • Pense en un momento que se deberia al como estaba declarando los atributos.

    Ejemplo:

    public Usuario usuario { get; set; }

    Asi que lo modifique a :

     private Usuario usuario;
    
      public Usuario Usuario
            {
                get
                {
                    return usuario;
                }
    
                set
                {
                    usuario = value;
    }

    Pero sigue de igual manera.


    Si la respuesta te ayuda, pues márcala como respuesta y vota. Saludos desde Santiago de Chile.

    viernes, 1 de diciembre de 2017 0:00