簡體   English   中英

僅允許ComboBox中的不同值

[英]allow only distinct values in 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;
         }
    }
}

你仍然可以綁定數據集。 綁定后,將選擇項添加到所需索引位置的組合框中

在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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM