使用Combobox和DataGridView创建主/细节

时间:2009-12-02 13:31:33

标签: c# sql-server visual-studio-2008 datagridview master-detail

我有一个ComboBox,其元素是从sqlserver表(groups)加载的。 我还有一个DataGridView,链接到另一个表(用户)。

当我加载表单时,组合充满了组,datagridview充满了用户(所有用户)

1)我希望能够从ComboBox(dropDownList)中选择一个组,然后使用属于该选定组的用户刷新DataGridView ...

2)如何在DataGridView中显示连接关系?假设我想在每个用户的最后一列显示groupName ...

PS:

  

我的VS2008项目中创建了一个xsd数据集   生成相应的tableAdapters   (groupTableAdapter,userTableAdapter)   并添加了一些sql方法   适配器

1 个答案:

答案 0 :(得分:3)

1)为两个表设置BindingSource。

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

2)设置您的Combo和Grid DataSources。

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

3)为Combo设置SelectedIndexChanged事件,并使用它来更改bsUser bindingsource上的过滤器。

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;
}

这很好......取自here

(是的,我也在MSDN上发布了这个,因为我很着急)