Не могу получить мой список для отображения объектов - PullRequest
1 голос
/ 23 марта 2012

Привет всем, я пытался поместить некоторые объекты в список ASP.NET, но он просто не работает.

У меня есть переопределенный метод ToString, поэтому я не могу понять, почему этот оператор не будет работать. Вот код, который я использую:

for (int i = 0; i < fitnessClassList.Count(); i++)
{
    lbDisplayItems.Items.Add(fClassList.getFClass(i));
}

И ошибки, которые я получаю:

Error   2   Argument 1: cannot convert from 
                    'FitClassManage' to 
                    'System.Web.UI.WebControls.ListItem'    

Error   1   The best overloaded method match for 
                    'System.Web.UI.WebControls.ListItemCollection.Add(System.Web.UI.WebControls.ListItem)' 
                    has some invalid arguments

Ответы [ 4 ]

2 голосов
/ 23 марта 2012

ASP.NET ListBox не похож на WinForms ListBox .Вы не можете добавить какой-либо объект к нему.Его коллекция элементов ( ListItemCollection ) ограничена ListItem (поэтому вы не можете добавлять свои бизнес-объекты, полагаясь на ToString() для визуализации).

Используйте этот код:

ListItem listItem = new ListItem(fitnessClassList.getFitnessClass(i).ToString());
lbDisplayItems.Items.Add(listItem);

Не забывайте, что если вы будете использовать этот ListItem, у вас будет не объект, а его отображаемое имя (результат ToString()).См. Ссылку о ListItem для получения более подробной информации.

В качестве альтернативы вы можете установить DataSource ListView в fitnessClassList (если он поддерживает этов любом случае, посмотрите этот обзор MSDN ).

1 голос
/ 18 июля 2012

Похоже, вы хотите отобразить «пользовательский» элемент в списке.Я заставил его работать следующим образом:

  • Я создал пользовательский элемент управления, в котором были нужные элементы управления с именем MyListItem.В моем случае я хотел установить флажок и текстовое поле.
  • Я создал новый myListBox, унаследованный от ListBox, и создал метод Add.Этот метод сделал следующее:
  • У него был один строковый аргумент для отображения текста
  • Он создал экземпляр MyListItem и присвоил текстовой строке его свойство Text.
  • Я назначил обработчик событий для ответа на событие проверки checkBox.
  • Я добавил свой пользовательский элемент в myListBox.controlls.

Когда я программно добавил элементы в myListBox, мои пользовательские элементыбыли показаны !!

0 голосов
/ 23 марта 2012

Вам необходимо использовать свойства .DataSource и .DataBind в списке.

lbDisplayItems.DataSource = fitnessClassList;
lbDisplayItems.DataBind();

Проверьте эту ссылку для небольшого примера http://asp -net-example.blogspot.com /2011/10 / как к DataBind-ListBox-использования-stack.html

0 голосов
/ 23 марта 2012

Метод Add ожидает объект ListItem (или строку, см. Ссылки ниже), но вы передаете пользовательский класс.

Вы, вероятно, хотите следующее:

lbDisplayItems.Items.Add(new ListItem(fitnessClassList.getFitnessClass(i).ToString()));

См. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listitemcollection.aspx - есть только 2 метода "Добавить".

См. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listitem.aspx для доступных конструкторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...