2010-04-20 21 views
46

Jaki jest najprostszy sposób powiązania Listbox do listy obiektów?Binding Listbox do listy <object>

+8

jaka jest twoja platforma? silverlight? WPF? WinFormy? ASP.NET? odpowiedź zależy od tej wiedzy. –

Odpowiedz

56

Patrzysz na DataSource property:

List<SomeType> someList = ...; 
myListBox.DataSource = someList; 

Należy również ustawić właściwość DisplayMember nazwy właściwości w obiekcie, który chcesz listbox do wyświetlania. Jeśli nie, zadzwoni pod numer ToString().

+0

Co zrobić, aby usunąć element SomeType z Listbox poprzez wybór? – cam

+0

'someList.Remove ((SomeType) myListBox.SelectedValue);' (W WinForms) – SLaks

+5

Witaj. Działa to dla mnie, o ile nie dodaję niczego do kolekcji. Jak tylko zmienię moje pozycje kolekcji w liście nie zaktualizuje się. Nawet po przypisaniu źródła danych po przełączeniu elementów w kolekcji. – Hooch

4

prawda, to nie ma nic prawdziwie zapewniają znaczące chyba że obiekty zostały prawidłowo nadpisane ToString() (lub nie jesteś naprawdę pracuje z ogólnej listy obiektów i może wiązać się z konkretnych dziedzin):

List<object> objList = new List<object>(); 

// Fill the list 

someListBox.DataSource = objList; 
14

Udając wyświetlasz listę obiektów z klientami „CustomerName” i „customerId” właściwości:

listBox.DataSource = customerListObject; 
listBox.DataTextField = "customerName"; 
listBox.DataValueField = "customerId"; 
listBox.DataBind(); 

Edit: wiem, że to działa w ASP.NET - jeśli robisz app WinForm, to powinien być całkiem podobny (mam nadzieję ...)

+1

Windows.Forms.Listbox ma innych członków; patrz poniżej. – surfmuggle

1

Istnieją dwa nain trasy tutaj:

1: listBox1.DataSource = yourList;

wykonywać żadnych manipulacji (Dodaj/Usuń), aby yourList i REBIND.
Ustaw DisplayMember i valueMember, aby kontrolować wyświetlane elementy.

2: lsitBox1.Items.AddRange(yourList.ToArray());

(lub użyć dla pętli zrobić Items.Add(...))

można sterować wyświetlacz przeciążenia toString() lista obiektów lub poprzez wdrożenie zdarzenie listBox1.Format.

11

Wiązanie System.Windows.Forms.Listbox kontrolą do listy obiektów (tutaj typu dynamiczny)

List<dynamic> dynList = new List<dynamic>() { 
      new {Id = 1, Name = "Elevator", Company="Vertical Pop" }, 
      new {Id = 2, Name = "Stairs", Company="Fitness" } 
}; 

listBox.DataSource = dynList; 
listBox.DisplayMember = "Name"; 
listBox.ValueMember = "Id"; 
1

ListBox1.DataSource = CreateDataSource(); 
 
ListBox1.DataTextField = "FieldProperty"; 
 
ListBox1.DataValueField = "ValueProperty";

Proszę odnieść się do this artykule szczegółowych przykładów.

0

I haven „t widział tu więc pisać, bo dla mnie jest to najlepszy sposób na WinForms:

List<object> objList = new List<object>(); 

    listBox.DataSource = objList ; 

    listBox.Refresh(); 
    listBox.Update();