- - PR -
DataSourceを設定したコンボボックスに空行を追加
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-10-17 02:48
Linq to SQL で取得したデータソースを以下のようにコンボボックスに設定しています。
categoryComboBox.DataSource = categories.ToArray(); categoryComboBox.ValueMember = "ID"; categoryComboBox.DisplayMember = "Name"; categoryComboBox.DataBindings.Add(new Binding("SelectedValue", entity, "CategoryID", true, DataSourceUpdateMode.OnPropertyChanged)); テーブル側の CategoryID は NULL を許容するので、ユーザにはブランクを選択させることができなくてはなりません。 しかし、コンボボックスに DataSource を設定していると combo.Items.Insert(0, "") ができません。また、カテゴリテーブルにブランク用のレコードを追加すると言う選択肢は許されない状況です。 combo.SelectedIndex = -1 とすることで初期状態は未選択とすることができますが、一度選択し保存してしまった場合、ユーザはそれをブランクに設定することができません。 何かいい解決策はありますでしょうか? | ||||||||||||
|
投稿日時: 2008-10-18 03:24
とりあえず解決しました。
以下のように、Linq to SQL で取得したものを ToList() し、そこの先頭にブランクレコードを挿入、
それを ToArray() してコンボボックスのデータソースに設定、
これで対応できました。 匿名クラスでは ID に null を設定できないので、便宜上以下のクラスを定義して使ってます。匿名クラスで ID = 0 として、Entity の PropertyChanged イベントで null にしてやってもいいかもしれません。
|
1