2010-10-12 4 views
3

У меня есть массив типа Person, который содержит строковые объекты: FirstName, LastName, login.Binding array + один объект для Dropdownlist

У меня это связано с выпадающим списком.

Теперь, наряду с этим массивом, я также хочу отобразить еще один элемент под названием «Стол». Как я могу это сделать?

Мой текущий код:

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

+0

Независимая строка. Это не тип Person. – xbonez

ответ

3

Вы можете установить AppendDataBoundItems свойство true (это false по умолчанию), добавьте элемент вручную, а затем сделать процесс Databinding добавить остальные пункты. 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.

+0

Только то, что я хотел. Благодаря! – xbonez

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); 
+0

Мне было интересно, если это можно сделать, не добавив его в список. Так как это действительно просто строка «Стол» и не нуждается в FirstName, Lastname и т. Д. – xbonez

+0

Gotcha. Если я не могу найти способ сделать это, не создавая другого массива класса Person, я буду использовать ваш второй метод. – xbonez

+0

По какой-то причине traders.Concat возвращает ошибку. Есть ли какая-то сборка или ссылка, мне нужно использовать Concat? – xbonez

Смежные вопросы