5

私のプロジェクトでは、からデータを入力しようとしていComboBoxますDataSet。入力に成功しましたが、内部の値が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ですか?

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で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;
于 2012-11-03T10:59:50.397 に答える