基于另一个组合框vb.net在datgrid中过滤组合框

时间:2010-10-19 02:49:54

标签: vb.net datagrid

我认为我的问题是描述性的,或者在数据网格文档中的Microsoft问题是,如何让组合框列显示基于不同组合框列的值的子数据集?

我有一个包含3个表的DS,Customers,Orders,OrderDetails。 订单详细信息位于DataGridView中,有两个组合框列,1个是Location,1个是产品。两者都来自单独的查找数据集。

我想要的是当用户选择位置组合时,应将产品组合过滤到可用的位置。产品与LocationID

相关

这是文档中的解决方案,但它对我有用。

private void Form1_Load(object sender, EventArgs e)

{     this.territoriesTableAdapter.Fill(this.northwindDataSet.Territories);     this.regionTableAdapter.Fill(this.northwindDataSet.Region);

// Setup BindingSource for filtered view.
filteredTerritoriesBS = new BindingSource();
DataView dv = new DataView(northwindDataSet.Tables["Territories"]);
filteredTerritoriesBS.DataSource = dv;

}

private void dataGridView1_CellBeginEdit(object sender,    DataGridViewCellCancelEventArgs e) {     if(e.ColumnIndex == territoryComboBoxColumn.Index)     {         //将组合框单元格数据源设置为已过滤的BindingSource         DataGridViewComboBoxCell dgcb =(DataGridViewComboBoxCell)dataGridView1       [e.ColumnIndex,e.RowIndex];         dgcb.DataSource = filteredTerritoriesBS;

    // Filter the BindingSource based upon the region selected
    this.filteredTerritoriesBS.Filter = "RegionID = " +
        this.dataGridView1[e.ColumnIndex - 1, e.RowIndex].Value.ToString();
}

}

private void dataGridView1_CellEndEdit(object sender,DataGridViewCellEventArgs e) {     if(e.ColumnIndex == this.territoryComboBoxColumn.Index)     {         //将组合框单元重置为未过滤的BindingSource         DataGridViewComboBoxCell dgcb =(DataGridViewComboBoxCell)dataGridView1       [e.ColumnIndex,e.RowIndex];         dgcb.DataSource = territoriesBindingSource; //未过滤

    this.filteredTerritoriesBS.RemoveFilter();
}

}

1 个答案:

答案 0 :(得分:0)

我发现了vb-tips.com提供的一种洗剂 它似乎工作得很好,并在加载表格时过滤DGV 这是我的代码; http://codepaste.net/wra8qw