2010-10-12 68 views
3

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

我有这个绑定到下拉列表。

现在随着这个数组,我还想显示一个名为“Desk”的项目。我怎样才能做到这一点?

我当前的代码是:

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

我也想要一个额外的项目,我将是默认选择的项目。

+0

什么是“书桌”?人的财产?与Person链接的独立对象? – Matthieu 2010-10-12 20:36:32

+0

一个独立的字符串。它不是Person类型。 – xbonez 2010-10-12 20:37:34

回答

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"); 

这不需要设置AppendDataBoundItemstrue

+0

正是我想要的。谢谢! – xbonez 2010-10-12 21:02:14

1

一种这样的方法是将GetTraders()的结果加载到List<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); 
+0

我在想如果可以在没有将它添加到列表中的情况下完成。因为,它实际上只是一个字符串“Desk”,并不需要名字,姓氏等。 – xbonez 2010-10-12 20:34:46

+0

Gotcha。如果我无法找到一种方法来创建另一个Person类的数组,我将使用第二种方法。 – xbonez 2010-10-12 20:38:40

+0

出于某种原因,traders.Concat返回一个错误。是否有需要使用Concat的程序集或参考? – xbonez 2010-10-12 20:45:12

相关问题