Население выпадающего списка веб-элемента управления ASP.NET

Я использую ASP.NET для создания динамической веб-формы с переменными элементами управления. Некоторые из элементов управления, которые я хочу создать, являются выпадающими списками, и я хотел бы, чтобы они были заполнены определенными пользовательскими подпунктами. Как я могу это сделать? Я не могу заполнить ddl самими подэлементами (они не имеют строкового типа), но я также не могу заполнить ddl строковой переменной-членом (subitem.displayName) без потери всего подэлемента. Вот код для справки:

 public class SubItem
{
    string displayName;
    string value;
    ...
}

Сначала я попытался добавить объекты в ddl напрямую:

DropDownList x;
x.ItemType = SubItem; //error "type not valid in this context"
x.Add(subitem); // error

В идеале, я мог бы решить эту проблему, отображая subitem.name в ddl, но с функциональностью анализируемого подэлемента, чтобы в обработчике событий я мог получить доступ ко всем свойствам подэлемента. Существует ли что-то вроде следующего?

DropDownList x;
x.ItemType = SubItem;
x.DisplayType = SubItem.displayName;
x.Items.Add(subitem);

Заранее спасибо!

1 ответ

Вы можете только связать что-то сделать DropDownList, который имеет и IEnumerable интерфейс. Как список или массив.

//create a new list of SubItem
List<SubItem> SubItems = new List<SubItem>();

//add some data
SubItems.Add(new SubItem() { displayName = "Test 1", value = "1" });
SubItems.Add(new SubItem() { displayName = "Test 2", value = "2" });
SubItems.Add(new SubItem() { displayName = "Test 3", value = "3" });

//create the dropdownlist and bind the data
DropDownList x = new DropDownList();
x.DataSource = SubItems;
x.DataValueField = "value";
x.DataTextField = "displayName";
x.DataBind();

//put the dropdownlist on the page
PlaceHolder1.Controls.Add(x);

С классом

public class SubItem
{
    public string value { get; set; }
    public string displayName { get; set; }
}
Другие вопросы по тегам