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.
Jak to tam přidáváš? Tam musí být nějaká bota, jinak by se tam nepřidal jenom prázdný řádek.
Klasicky - vytvoření instance a přidání do BindingSourcu:
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":
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.