5

在我的项目中,我试图ComboBoxDataSet. 我成功填充,但其中的值ComboBox并不明显(因为它显示了 中存在的值DataSet)。我无法绑定到ComboBoxDataSet因为我在填充值时首先添加了“选择”文本。

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

4

5 回答 5

8
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);
     }
}
于 2012-11-03T10:56:52.027 回答
3

你可以试试:

cmb.Items.Clear();
cmb.Items.Add("Select");
cmb.Items.AddRange(dds.Tables[0].AsEnumerable()
                           .Select(x=>x[value].ToString())
                           .Distinct());
  • 它使用 linq 选择值,应用Distinct()选择唯一值
  • 如果要对值进行排序,可以应用OrderBy 。
于 2012-11-03T10:55:52.800 回答
1
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;
         }
    }
}
于 2012-11-03T10:55:57.637 回答
0

您仍然可以绑定数据集。绑定后将选择项添加到您想要的索引位置的组合框中

于 2012-11-03T10:55:30.920 回答
0

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

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;
于 2012-11-03T10:59:50.397 回答