0

我有类似的课

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 链接到列表中对象的属性?

谢谢!

4

2 回答 2

1

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

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

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

于 2013-12-03T09:56:22.480 回答
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"
于 2013-12-03T10:00:21.990 回答