Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno C# BindingSource refresh nefunguje

Ahoj, potřebuji poradit s nefunkčním refreshem bindingsourcu.
Mám List<Tour> a klasický ListBox, který je má zobrazovat.
Dále mám BindingSource, jehož DataSource je právě ta kolekce a ten ListBox má DataSource právě ten BindingSource, následovně:

List<Tour> activeTours = /* kolekce plná dat */;
BindingSource bsListBoxTours = new BindingSource();
bsListBoxTours.DataSource = activeTours;
this.listBoxTours.DataSource = bsListBoxTours;
this.listBoxTours.DisplayMember = "ListView";

Nyní chci přidat nový zájezd a cílem toho bindingu je, aby mi ho v tom ListBoxu okamžitě ukázal. Do té kolekce nový zájezd přidat nejde, protože to má nastavený ten binding. Když přidám zájezd do toho bindingu, tak to normálně jde, v listboxu mi naskočí nová řádka (což by měla), ale je prázdná (není v ní text). Když jsem to debugoval, naskočila klasicky do Items nová položka, která měla hodnoty vyplněné jako všechny už existující.
Co jsem googlil, tak bsListBoxTours.ResetBinding() nepomohlo a

this.listBoxTours.DataSource = null;
this.listBoxTours.DataSource = bsListBoxTours;
this.listBoxTours.DisplayMember = "ListView";

také nepomohlo...

Díky za pomoc.

Předmět Autor Datum
Jak to tam přidáváš? Tam musí být nějaká bota, jinak by se tam nepřidal jenom prázdný řádek.
Wikan 18.05.2013 18:48
Wikan
Klasicky - vytvoření instance a přidání do BindingSourcu: Tour tour = new Tour { ID = CalculateIDNe…
freez2 18.05.2013 20:25
freez2
Tak už jsem to vyřešil. Bylo to tím, že já jsem jako DisplayMember v tom ListBoxu používal property… poslední
freez2 18.05.2013 22:33
freez2

Tak už jsem to vyřešil. Bylo to tím, že já jsem jako DisplayMember v tom ListBoxu používal property "ListView" třídy Tour, která se skládála "až při volání getru":

public string ListView 
{
   get 
   {
      return ID + " - " + Destination + ", " + DateTime.ToString("dd.MM.yyyy");
   }
   set { ListView = value; }
}

No a v tomto případě se asi "nesložila" nebo nevím, ale když jsem přidal nový prvek, tak tato property byla null, proto byla řádka prázdná.
Tak jsem property přepsal natvrdo sám a už to jde v pořádku.

Zpět do poradny Odpovědět na původní otázku Nahoru