2015-04-15 25 views
-1

我想填充DropDownList,但我在DataTextFieldDataValueField上遇到了一些麻烦。该下拉列表不显示列表的元素。指定DataTextField和DataValueField后,为什么我的DropDownList不显示我的List的元素?

private void llenarProfesionales() 
{ 
    List<Profesional> profesionales = daoProfesionales.getAll(); 
    DropDownProfesioanles.DataSource = profesionales; 
    DropDownProfesioanles.DataTextField = "nombre"; 
    DropDownProfesioanles.DataValueField = "id"; 
    DropDownProfesioanles.DataBind(); 
} 

这里是我profesional类,它扩展usuario

public class Profesional: Usuario 
{ 
    long idProfesional; 
    List<Servicio> listaServicios; 
    Profesion profesion; 
    Usuario usuar; 

    Decimal comision; 

    public Decimal Comision 
    { 
     get { return comision; } 
     set { comision = value; } 
    } 


    public Profesional() 
    { 
    } 

    public long IdProfesional 
    { 
     get { return idProfesional; } 
     set { idProfesional = value; } 
    } 

    public List<Servicio> ListaServicios 
    { 
     get { return listaServicios; } 
     set { listaServicios = value; } 
    } 

    public Profesion Profesion 
    { 
     get { return profesion; } 
     set { profesion = value; } 
    } 

    public Usuario Usuar 
    { 
     get { return usuar; } 
     set { usuar = value; } 
    } 
} 

这里是类usuario

public class Usuario 
{ 
    private long id; 

    private String nombre; 
    private String apellido; 
    private String telefono; 
    private String celular; 
    private Boolean activo; 
    private String user; 
    private String password; 
    public Usuario() 
    { 

    } 

    public Usuario(string nombre, string apellido, string telefono , string celular, string user, string password ,long id, bool activo) { 
     this.Id = id; 
     this.Nombre = nombre; 
     this.Apellido = apellido; 
     this.Telefono = telefono; 
     this.Celular = celular; 
     this.User = user; 
     this.password = password; 
     this.activo = activo; 
    } 

    public long Id 
    { 
     get { return id; } 
     set { id = value; } 
    } 

    public String Nombre 
    { 
     get { return nombre; } 
     set { nombre = value; } 
    } 

    public String Apellido 
    { 
     get { return apellido; } 
     set { apellido = value; } 
    } 

    public String Telefono 
    { 
     get { return telefono; } 
     set { telefono = value; } 
    } 
    public String Celular 
    { 
     get { return celular; } 
     set { celular = value; } 
    } 

    public String Password 
    { 
     get { return password; } 
     set { password = value; } 
    } 
    public Boolean Activo 
    { 
     get { return activo; } 
     set { activo = value; } 
    } 
    public String User 
    { 
     get { return user; } 
     set { user = value; } 
    } 
} 

回答

1

指定的公共属性,而不是私有字段:

DropDownProfesioanles.DataTextField = "Nombre"; 
DropDownProfesioanles.DataValueField = "Id"; 

而且,没有理由来定义你的类这样的,在那里你定义一个公共Usuario属性,但也延长了Usuario类(这样你就可以访问它的所有属性,但他们不会有任何价值,因为你正在使用单独的“Usuar”变量)。

public class Profesional : Usuario 
{ 
    ... 
    Usuario usuar; 

    ... 
    public Usuario Usuar 
    { 
     get { return usuar; } 
     set { usuar = value; } 
    } 
} 

如果要使用公共财产,然后不扩展其他类:

public class Profesional 
{ 
    ... 
    Usuario usuar; 

    ... 
    public Usuario Usuar 
    { 
     get { return usuar; } 
     set { usuar = value; } 
    } 
} 
+0

谢谢,但它不工作 – user3767613

+0

你能详细说明吗?你有使用这个错误吗?您的DropDownList是否显示列表中的每个项目都有一个条目,但它们全是空白并且不显示任何文本? –

+0

我没有得到任何错误,但我的下拉列表中的所有项目都像空字符串。 – user3767613

0

感谢我解决将此代码添加到设备专业

 public String Nombre 
    { 
     get { return usuar.Nombre; } 
     set { usuar.Nombre = value; } 
    } 
答案
+0

为什么要扩展'Usuario'类并拥有一个公共'Usuario'属性?只要做一个或另一个。这就是你的问题的原因。如果你打算使用这个解决方案,那么不要打扰让'Profesional'扩展'Usuario'类。 –

相关问题