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

Я использую 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 Ответ

0 голосов
/ 06 июля 2018

Вы можете связать только то, что есть 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; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...