Пример кода, Winform с двумя comboBox, привязанными к двум таблицам в наборе данных.Таблица "lstCountries" список текущих стран Таблица "lstState" список всех штатов / провинций для всех стран.
Таблица lstCountries (Int32 CountryID, строка CountryName) Таблица lstStates (Int32 StateID, Int32 CountryID, строка StateName)
В этом коде я заполняю cboState, основываясь на значении, выбранном cboCountry, в то время как обе комбинации объединяются с таблицами данных, извлеченными из базы данных.
// Load data from database (not shown)
// _dataSet.Tables["lstCountries"] datasource for cboCountry
// _dataSet.Tables["lstStates"] datasource for cboState
//
// cboCountry - comboDropDown - List on countries
// cboState = comboDropDown - List of states
// Use boolean bloading to prevent setting datasource for cboState when cboCountry is intially loaded.
void cboCountry_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox cbo = (sender as ComboBox);
if (cbo.SelectedIndex > -1 && !bloading)
{
Int32 countryID = Convert.ToInt32(((System.Data.DataRowView)(cbo.SelectedItem)).Row.ItemArray[0].ToString());
cboState.Text = "";
DataView view = _dataSet.Tables["lstStates"].DefaultView;
view.RowFilter = string.Format("CountryID={0}", countryID);
DataTable table = view.ToTable();
cboState.DataSource = table;
cboState.SelectedIndex = -1;
}