Привязка массива + один объект к Dropdownlist - PullRequest
3 голосов
/ 13 октября 2010

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

У меня есть привязка к выпадающему списку.

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

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

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

Я также хочу, чтобы один дополнительный элемент, который я добавлял, был выбранным по умолчанию.

Ответы [ 2 ]

3 голосов
/ 13 октября 2010

Можно установить для свойства 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 голос
/ 13 октября 2010

Одним из таких методов является загрузка результата 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);
...