Databinding - Textbox an DGV binden

13/12/2008 - 10:49 von jogisarge | Report spam
Hi,

ich würde gerne in einer Textbox den Inhalt eines Feldes zeigen,
welches gerade im Datagridview selektiert ist.
Also ein bestimmtes Feld aus der Zeile.

mein Code sieht so aus:
DataSet dsHersteller = new DataSet();BindingSource bsHersteller = new
BindingSource();dsHersteller = herstellermanager.GetList(); // -
liefert ein dataset
bsHersteller.DataSource = dsHersteller.Tables["producer"];
bsHersteller.Sort = "producer_id";
dgvHersteller.DataSource = bsHersteller.DataSource;
tbxHerstellerNr.DataBindings.Add("Text", bsHersteller, "producer_id");

Wenn ich mein Programm starte, dann wird in der Textbox der Wert des
Feldes aus der ersten Zeile angezeigt.
Selektiere ich aber eine andere Zeile, àndert sich in der Textbox
nichts.

Kann mir jemand sagen, wie ich das machen kann ?

Gruß Jogi
 

Lesen sie die antworten

#1 Elmar Boye
13/12/2008 - 15:36 | Warnen spam
Hallo Jogi,

"jogisarge" schrieb ...
ich würde gerne in einer Textbox den Inhalt eines Feldes zeigen,
welches gerade im Datagridview selektiert ist.
Also ein bestimmtes Feld aus der Zeile.
mein Code sieht so aus:
DataSet dsHersteller = new DataSet();



Beim new DataSet() gehe ich mal von einem Überbleibsel aus,
denn es ist hier überflüssig, wegen GetList() unten.

BindingSource bsHersteller = new BindingSource();
dsHersteller = herstellermanager.GetList(); // liefert ein dataset
bsHersteller.DataSource = dsHersteller.Tables["producer"];
bsHersteller.Sort = "producer_id";
dgvHersteller.DataSource = bsHersteller.DataSource;



Du solltest hier an die BindingSource binden, also:
dgvHersteller.DataSource = bsHersteller;

tbxHerstellerNr.DataBindings.Add("Text", bsHersteller, "producer_id");

Wenn ich mein Programm starte, dann wird in der Textbox der Wert des
Feldes aus der ersten Zeile angezeigt. Selektiere ich aber eine
andere Zeile, àndert sich in der Textbox nichts.



Denn ansonsten hast Du einen eigenen BindingContext
und die TextBox ist wird nicht mehr synchronisiert.

Hintergrund: Eine BindingSource stellt einen eigenen CurrencyManager
als BindingContext bereit. Eine Synchronisation klappt nur, wenn
alle Bindungen den gleichen BindingContext (hier CurrencyManager)
verwenden.

Gruß Elmar

Ähnliche fragen