只允许在ComboBox中使用不同的值

在我的项目中,我正在尝试从DataSet填充ComboBox 。 我成功填充,但ComboBox内的值不明显(因为它显示了DataSet中的值)。 我不能将ComboBox绑定到DataSet因为我在填充值时首先添加“选择”文本。

 ComboBox --> cmb DataSet --> ds DataSet Column Name --> value(string) 

这是我的代码:

 cmb.Items.Clear(); cmb.Items.Add("Select"); for (int intCount = 0; intCount < ds.Tables[0].Rows.Count; intCount++) { cmb.Items.Add(ds.Tables[0].Rows[intCount][value].ToString()); } cmb.SelectedIndex = 0; 

如何在ComboBox允许不同的值(或限制重复值)?

 for (int intCount = 0; intCount < ds.Tables[0].Rows.Count; intCount++) { var val=ds.Tables[0].Rows[intCount][value].ToString(); //check if it already exists if(!cmb.Items.Contains(val)) { cmb.Items.Add(val); } } 

你可以试试:

 cmb.Items.Clear(); cmb.Items.Add("Select"); cmb.Items.AddRange(dds.Tables[0].AsEnumerable() .Select(x=>x[value].ToString()) .Distinct()); 
  • 它使用linq选择值,应用Distinct()选择唯一值
  • 如果要对值进行排序,可以应用OrderBy 。
 for(int i = 0; i < cmb.Items.Count; i++) { for(int y = 0; y < cmb.Items.Count; y++) { if( y != i && cmb.Items[i].Text == cmb.Items[y].Text) { cmb.Items.RemoveAt(i); break; } } } 

您仍然可以绑定数据集。 绑定后,将选择项添加到所需索引位置的combobox中

在Datatable中获取Distict值然后填充组合:

 DataView dvw = new DataView(ds.Tables[0]); DataTable table = dvw.ToTable(true, value); cmb.Items.Clear(); cmb.Items.Add("Select"); for (int intCount = 0; intCount < table.Rows.Count; intCount++) { cmb.Items.Add(table.Rows[intCount][value].ToString()); } cmb.SelectedIndex = 0;