【发布时间】:2013-06-08 19:02:10
【问题描述】:
我有两个 DataGridViewComboBoxColumn。我想根据第一个 GridViewComboBoxColumn 的选择填充第二列。我在第一个 Combobox 中有组,在第二个 Combobox 中有服务。我希望当我选择 group1 时,只有 group1 的服务显示在服务组合框中。 我正在使用存储过程。
var groupColumn = new DataGridViewComboBoxColumn();
DataTable dtcategori = cb.GetAllDataCategori();
groupColumn.Name = "Group";
groupColumn.HeaderText = Resources.GroupName;
groupColumn.DataSource = dtcategori;
groupColumn.ValueMember = "ID";
groupColumn.DisplayMember = "Name";
groupColumn.Width = 100;
this.DataGridViewFactor.Columns.Add(groupColumn);
var serviceColumn = new DataGridViewComboBoxColumn();
//var categoriId = Convert.ToInt32(groupColumn.);
// DataTable dtServices = sb.ServiceGetById(categoriId);
DataTable dtServices = sb.GetAllDataServices();
serviceColumn.Name = "Services";
serviceColumn.HeaderText = Resources.Service;
serviceColumn.DataSource = dtServices;
serviceColumn.ValueMember = "ID";
serviceColumn.DisplayMember = "Name";
serviceColumn.Width = 100;
this.DataGridViewFactor.Columns.Add(serviceColumn);
【问题讨论】:
-
您的要求似乎很正常,但有一种情况使其不稳定:当您将 DataGridViewComboBoxColumn DataSource 绑定到 DataTable 时,每行中的所有 ComboBoxes 将使用相同的 DataSource,假设此 DataSource 有 4项目:1,2,3,4。如果您从 Column1 中选择并使 DataSource 仅保留 1,2 但还有其他行在 Column2 中具有值为 3 和 4 的单元格,该怎么办?这些单元格将不会显示。您知道
ComboBox的工作原理,如果该值不在其Items列表中,则不会显示该值。这就是为什么我尝试解决这个问题但并不容易。
标签: c# winforms c#-4.0 datagridview datagridviewcombobox