Создать Master / Detail с Combobox и DataGridView - PullRequest
0 голосов
/ 02 декабря 2009

У меня есть ComboBox с его элементами, загруженными из таблицы sqlserver (группы). У меня также есть DataGridView, связанный с другой таблицей (пользователи).

Когда я загружаю форму, комбо заполняется группами, а представление данных заполняется пользователями (всеми пользователями)

1) Я хочу иметь возможность выбрать группу из ComboBox (dropDownList), а затем обновить DataGridView с пользователями, которые принадлежат к этой выбранной группе ...

2) И как я могу показать отношение соединения в DataGridView? Допустим, я хочу показать groupName в последнем столбце каждого пользователя ...

PS:

У меня есть набор данных xsd, созданный в моем проекте VS2008 с его соответствующие таблицы сгенерированные адаптеры (groupTableAdapter, userTableAdapter) и некоторые sql-методы добавлены к каждому адаптер

1 Ответ

3 голосов
/ 04 декабря 2009

1) Установите BindingSource для обеих таблиц.

BindingSource bsGroup = new BindingSource();
BindingSource bsUser  = new BindingSource();
bsGroup.DataSource = MyDataSet.Tables["Group"];
bsUser.DataSource = MyDataSet.Tables["User"];

2) Настройте источники данных Combo и Grid.

MyCombo.DataSource    = bsGroup;
MyCombo.DisplayMember = "GroupName"; // whatever your ColumnName is
MyCombo.ValueMember   = "GroupID";
MyGrid.DataSource = bsUser;

3) Установите событие SelectedIndexChanged для Combo и используйте его для изменения фильтра в источнике привязки bsUser.

MyCombo.SelectedIndexChanged += new System.EventHandler(MyCombo_SelectedIndexChanged);
private void MyCombo_SelectedIndexChanged(object sender, System.EventArgs e)
{
    // this will depend on what your column names are, obviously
    string filter = string.Format("GroupID = {0}", MyCombo.SelectedValue);
    bsUser.Filter = filter;
}

Это работало нормально ... взято из здесь .

(Да, я также разместил это на MSDN, потому что спешил)

...