У меня есть 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();
Установите свойство DataTextField
в поле, которое вы хотите отобразить:
<asp:ListBox DataTextField="CompName" ... />
Из документации:
Используйте свойства DataTextField и DataValueField, чтобы указать, какое поле в источнике данных привязывается к свойствам
Text
иValue
, соответственно, каждого элемента списка в элементе управления.
Для тех, кто знаком с разработкой настольных систем, они эквивалентны DisplayMember
и ValueMember
.
Чтобы установить его в код-сзади (как вы указали, вам нужно сделать), дайте элементу управления ID:
<asp:ListBox ID="MyListBox" ... />
И установите одно и то же свойство:
MyListBox.DataTextField = "CompName";
CompName
для CompName
, и мне нужно будет повторно использовать списки для списков объектов других типов.
ID="MyListBox
управления идентификатор ( ID="MyListBox
), а затем установите то же свойство в MyListBox.DataTextField = "";
кода. ( MyListBox.DataTextField = "";
)
foreach
, но оставьте две строки кода внутри него. Вы не хотите выполнять это в цикле ... вамlogic.coms
многократно устанавливать DataSource для каждого элемента в коллекцииlogic.coms
. Просто установите DataSource наlogic.coms
один раз и установите свойствоDataTextField
один раз.