Hi, I'm trying to find out what the correct way is to bind two related tables to winform textboxes. The scenario is the following:
I have a form showing customer information as well as 1-n adresses. The customer information comes from one table, the adresses from another. In the form, the user sees the selected customers information and the default mailing address. He can choose to view another adress by selecting the relevant entry in a combobox. I retrieved the data as follows: (...code abbreviated) _daKunden.Fill(_dsKunden,"Kunden"); _daAdressen.Fill(_dsKunden, "Adressen"); _dsKunden.Relations.Add("KundenAdressen",_dsKunden.Tables ["Kunden"].Columns["IDKunde_PK"], _dsKunden.Tables["Adressen"].Columns ["IDKunde_FK"]); In the form I bind the main customer data to the controls as follows: DataViewManager dvm = new DataViewManager(_dsKunden); cboKunden.DataSource = dvm; cboKunden.DisplayMember = "Kunden.FullName"; cboKunden.ValueMember = "Kunden.IDKunde_PK"; txtName.DataBindings.Add("Text",dvm, "Kunden.Name"); txtBemerkungen.DataBindings.Add("Text",dvm, "Kunden.Bemerkungen"); (...code abbreviated) This works. When I select a different customer in the combobox (cboKunden) all textboxes show the new information. Also can I pass any updates through the dataadapter's update method to the db. What's not working is the display of the related adresses. Here is what I've tried: dvm.DataViewSettings["Adressen"].RowFilter="IDKunde_FK = " + cboKunden.SelectedValue.ToString(); cboAdresse.DataSource = dvm; cboAdresse.DisplayMember = "Adressen.Typ"; txtStrasse.DataBindings.Add("Text",dvm, "Adressen.Adresse"); On the first customer shown in the form, this works fine and I can select a different adress through the adress combobox (cboAdresse) to show the information. When I move to a different customer the information does not get updated. So I've added the following to the SelectedIndexChanged of the customer combobox: DataViewManager dvm = new DataViewManager(_dsKunden); dvm.DataViewSettings["Adressen"].RowFilter="IDKunde_FK = " + cboKunden.SelectedValue.ToString(); cboAdresse.DataSource = dvm; cboAdresse.DisplayMember = "Adressen.Typ"; As expected, this updates the combobox but not any of the related textboxes. Do I have to redefine the binding on all the textboxes after every change of the customer? I don't think this is the most efficient way of doing it, but I'm kind of stuck. Does anyone have a suggestion on how to keep the two tables in sync, and leaving the possibility open of updating either table through the dataadapter? Michel You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.