0

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

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

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

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

PS:

我在我的 VS2008 项目中创建了一个 xsd 数据集,并生成了相应的 tableAdapter(groupTableAdapter、userTableAdapter)和一些 sql-methods 添加到每个适配器

4

1 回答 1

3

1) 为两个表设置一个 BindingSource。

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

2) 设置您的组合和网格数据源。

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

3) 为 Combo 设置 SelectedIndexChanged 事件,并使用它来更改 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 上发布了这个,因为我很着急)

于 2009-12-04T19:03:38.913 回答