代码之家  ›  专栏  ›  技术社区  ›  Enrique

使用ComboBox和DataGridView创建主/细节

  •  0
  • Enrique  · 技术社区  · 15 年前

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

    当我加载表单时,组合框被组填充,DataGridView被用户(所有用户)填充。

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

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

    PS:

    我在VS2008项目中创建了一个XSD数据集,其中 生成相应的TableAdapters (GroupTableAdapter、UserTableAdapter) 以及添加到每个 适配器

    1 回复  |  直到 8 年前
        1
  •  3
  •   Laurel Enrique    8 年前

    1)为两个表设置一个绑定源。

    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)为组合设置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上贴了这个,因为我赶时间)