は、私はコンボボックス(selectLaborCat
)を作成したいと思っていますロードコンボボックスセット - 私のアプリケーションで
public class LaborCategory
{
public int Id { get; set; }
[MaxLength(10)]
public string Code { get; set; }
[MaxLength(50)]
public string Name { get; set; }
public decimal Rate { get; set; }
public decimal OnSite { get; set; }
public decimal OffSite { get; set; }
}
モデルを持っている「DataSourceプロパティが設定されている場合、Itemsコレクションを変更することはできません」最初のオプションを持っています「Add New Labor Category」(これはインデックス0になります)、次にリストの残りの部分(selectLaborCat.Value = dataSet.IdとselectLaborCat.Text = dataSet.Code)
私はそれに参加していると思う使用して修正する
var categories = _context.LaborCategories.OrderBy(c => c.Code).ToArray();
selectLaborCat.DisplayMember = "Code";
selectLaborCat.ValueMember = "Id";
selectLaborCat.DataSource = categories;
これは私が期待するようにこれをコンボボックスに描画します。 DataSourceプロパティが
に設定されている場合
しかし、私は、私はアイテムの収集を行うことができないと言ってselectLaborCat.Items.Insert(0, "Add New Labor Category");
それ誤りを試してみる場合は、変更することはできませんどのように私は、インデックス0としての「新労働党カテゴリを追加」で入手できますか?私は、データセットのレコードとして "Add New Category"を追加しようとしましたが、データセットをどのようにソートするかにかかわらず、常にcomboBoxのインデックス0にします。
データセットをリストとして取得し、新しいリストを作成し、デフォルトの「Add New Category」を最初の要素として追加し、データセットリストを新しいリストにコピーし、そのようなコンボボックスをバインドします。
var categories = _context.LaborCategories.OrderBy(c => c.Code).ToList();
var comboBoxElements = new List<LaborCategory>();
var laborCategory = new LaborCategory();
laborCategory.Id = 0;
laborCategory.Code = "Add New Labor Category";
comboBoxElements.Add(laborCategory);
foreach (var category in categories)
{
comboBoxElements.Add(category);
}
selectLaborCat.DisplayMember = "Code";
selectLaborCat.ValueMember = "Id";
selectLaborCat.DataSource = comboBoxElements;
またはそれ以上の方法がありますか?
'comboBoxElements.Add(新しいLaborCategory {ID = 0、コード=「新労働党カテゴリを追加」});' –
を使用すると、最初の項目の挿入など、コードや表示順リストを維持したい場合他のコードよりもアルファベット順に低いプロンプトを追加しようとするとよいでしょう。たとえば、_(新規を追加...)_ – Steve
アイテムを追加するには、 'ComboBox'の近くにあるボタンを使用します。 –