将数组+一个对象绑定到Dropdownlist

时间:2010-10-12 20:28:01

标签: c# asp.net data-binding drop-down-menu

我有一个Person类型的数组,其中包含字符串对象:FirstName,LastName,login。

我将此绑定到下拉列表。

现在连同这个数组,我还想再显示一个名为“Desk”的项目。我怎么能这样做?

我目前的代码是:

Person[] traders = GetTraders();
ddl_trader.Items.Clear();
ddl_trader.DataSource = traders;
ddl_trader.DataTextField = "LastName";
ddl_trader.DataValueField = "Login";
ddl_trader.DataBind();

我还希望我添加的一个额外项目是默认选定项目。

2 个答案:

答案 0 :(得分:3)

您可以将AppendDataBoundItems属性设置为true(默认情况下为false),手动添加项目,然后执行数据绑定过程以添加其余项目。 AppendDataBoundItems确定在数据绑定期间是否清除了列表。

ddl_trader.Items.Clear();
ddl_trader.AppendDataBoundItems = true;
ddl_trader.Items.Add("Desk");
ddl_trader.DataTextField = "LastName";
ddl_trader.DataValueField = "Login";
ddl_trader.DataSource = traders;
ddl_trader.DataBind();

如果您需要在绑定列表后添加新项目,则可以执行

ddl_trader.Items.Insert(0, "Desk");

这不需要将AppendDataBoundItems设置为true

答案 1 :(得分:1)

一种方法是将GetTraders()的结果加载到List<Person>。然后,您可以在将一个或多个新Person对象绑定到下拉列表之前将其添加到列表中。

List<Person> traders = new List<Person>(GetTraders());
traders.Add(new Person() { LastName = "Foo", Login = "Bar" });
ddl_trader.DataSource = traders;

您还可以定义一个附加数组并将其连接到结果,而不是创建组合集合。 (注意:这将是作为单个序列处理的两个不同的阵列,但是后备阵列仍然是单独的。)

Person[] traders = GetTraders();
Person[] moreTraders = new Person[] { new Person() { LastName = "Foo", Login = "Bar" } };
ddl_trader.DataSource = traders.Concat(moreTraders);