只允许在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;