Combobox值在Data GridView中更改事件?

时间:2014-03-28 14:19:49

标签: c# datagridview desktop-application

我有一个包含2列的DataGridView,第一个是组合框,第二个也是windows应用程序中的组合框。

如果用户更改了组合框,我需要更新第三列中的第二个组合框,但我的问题是如何做到这一点? 我使用以下技术添加了两个组合框

 DataTable Pdt = new DataTable();
            Pdt = objProductCategory.SelectAll();
            BindingSource ps = new BindingSource();
            ps.DataSource = Pdt;
            DataGridViewComboBoxColumn ProductCatColumn = new DataGridViewComboBoxColumn();
            ProductCatColumn.DataSource = ps;
            ProductCatColumn.HeaderText = "Product Category";
            ProductCatColumn.Name = "ProductCatColumn";
            ProductCatColumn.ValueMember = "ProductCatId";
            ProductCatColumn.DisplayMember = "CatName";
            gvSale.Columns.Add(ProductCatColumn);

2 个答案:

答案 0 :(得分:0)

您可能想要创建一个继承DataGridViewComboBoxCell

的类

然后覆盖您需要的任何事件方法,例如OnKeyUp以便在击键时直接验证。

DataGridViewComboBoxCell Class

答案 1 :(得分:0)

我不确定我是否正确理解了这个问题,但如果是这样,那么你可以解决问题,或许

<DataGridComboBoxColumn
    Header="FirstColumn"
    ItemsSource="{Binding FirstItemsSource}"
    SelectedValuePath="{Binding FirstSelectedValuePath}"
    DisplayMemberPath="{Binding FirstDisplayMemberPath}"
    SelectedValueBinding="{Binding FirstSelectedValue}"/>
<DataGridComboBoxColumn
    Header="SecondColumn"
    ItemsSource="{Binding SecondItemsSource}"
    SelectedValuePath="{Binding SecondSelectedValuePath}"
    DisplayMemberPath="{Binding SecondDisplayMemberPath}"
    SelectedValueBinding="{Binding SecondSelectedValue}"/>

在DataContext(代码隐藏或ViewModel)中,实现相应的属性:

public IList<YourType> FirstItemsSource
{
    get
    {
        return this.firstItemsSource;
    }
    set
    {
        this.firstItemsSource = value;
    }
}

public YourType SecondSelectedValue
{
    get
    {
        return this.secondSelectedValue;
    }
    set
    {
        this.secondSelectedValue = value;

        // here you can set the FirstItemsSource
        this.FirstItemsSource = this.RefreshFirstItemsSource();
    }
}

我希望我能正确理解你,并且这个解决方案可以帮助你进一步; - )