Заполнение ListBox.DataTextField

1

У меня есть asp: Listbox с DataSource, установленным в Logic.Coms. Это объект списка, который содержит несколько объектов Company. Если у Company есть свойство CompName, как мне установить ListBox.DataTextField для отображения этого имени, не нарушая целостности щелчка по выбору?
В этом случае выбор записи в списке будет ссылаться на объект Company, чтобы отобразить его свойства на другой вкладке.

Для справки, это то, что у меня есть до сих пор:

logic.createQuery(nameBox.Text, "companyName");
foreach (Objects.Company c in logic.coms)
      {
           resultsListBox.DataSource = logic.coms;
           resultsListBox.DataTextField = //???
      } 
resultsListBox.DataBind();
  • 1
    Удалите оператор foreach , но оставьте две строки кода внутри него. Вы не хотите выполнять это в цикле ... вам logic.coms многократно устанавливать DataSource для каждого элемента в коллекции logic.coms . Просто установите DataSource на logic.coms один раз и установите свойство DataTextField один раз.
  • 0
    @GrantWinney спасибо, я пропустил это из более раннего эксперимента.
Теги:
listbox

1 ответ

1
Лучший ответ

Установите свойство DataTextField в поле, которое вы хотите отобразить:

<asp:ListBox DataTextField="CompName" ... />

Из документации:

Используйте свойства DataTextField и DataValueField, чтобы указать, какое поле в источнике данных привязывается к свойствам Text и Value, соответственно, каждого элемента списка в элементе управления.

Для тех, кто знаком с разработкой настольных систем, они эквивалентны DisplayMember и ValueMember.


Чтобы установить его в код-сзади (как вы указали, вам нужно сделать), дайте элементу управления ID:

<asp:ListBox ID="MyListBox" ... />

И установите одно и то же свойство:

MyListBox.DataTextField = "CompName";
  • 0
    Возможно ли сделать это в коде позади? У меня нет ссылки в файле CompName для CompName , и мне нужно будет повторно использовать списки для списков объектов других типов.
  • 0
    Я не понимаю, почему нет. Просто дайте ID="MyListBox управления идентификатор ( ID="MyListBox ), а затем установите то же свойство в MyListBox.DataTextField = ""; кода. ( MyListBox.DataTextField = ""; )
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню