我有一个包含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);
答案 0 :(得分:0)
您可能想要创建一个继承DataGridViewComboBoxCell
。
然后覆盖您需要的任何事件方法,例如OnKeyUp
以便在击键时直接验证。
答案 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();
}
}
我希望我能正确理解你,并且这个解决方案可以帮助你进一步; - )