来自字段属性的DataTextField

时间:2013-12-03 09:49:52

标签: c# asp.net datatextfield

我上课类似

public class A
{
    public string name;
}

public class B
{
    public int Id;
    public A obj;
}

然后,我有ASP.NET WebForms应用程序和带有ListBox控件的页面。

我想将List<B>设置为ListBox的数据源。

List<B> list = ...; //fill data
lbx.DataSource = list;
lbx.DataValueField = "Id";
lbx.DataTextField = A.name; //how can I do it?
lbx.DataBind();

所以,我的问题是:如何将DataTextField链接到列表中对象的属性?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以在B类中为Name创建一个属性。例如

public class B
{
public int Id;
public A obj;
public string Name{ get {return obj.name;}}
}

用它作为      lbx.DataTextField = "Name";

答案 1 :(得分:1)

不确定您使用的列表框控件是否支持嵌套属性(我知道某些第三方控件会这样做),如下所示:

lbx.DataTextField = "obj.name"

如果它不支持,则将A的嵌套属性包装到B的另一个只读属性中:

public class B
{
    public int Id;
    public A obj;
    public string NameOfA
    {
       Get{return obj.name;}
    }
}

然后:

lbx.DataTextField = "NameOfA"