- - PR -
SelectedValueとSelectedIndex
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-10-02 17:23
お世話になっています。
VB2005tでアプリを開発しています。 Datasetには2つフィールドがあり、 [処理区分]と[処理区分名]が格納されています。 で、ComboboxのDataSourceにDatasetをセットし、 CombobxのValueMemberに[処理区分]を、DisplayMemberに[処理区分名]を指定します。 内容は 処理区分 1 2 3 4 処理区分名 新規 修正 削除 照会 です そこで、Comboboxの処理選択に応じた処理を実行する為 Combobox_SelectedValueChangedイベントプロシージャを コーディングしました。 Combobox_SelectedValueChanged Select Case Combobox.SelectedValue Case 1 新規の処理 Case 2 修正の処理 Case 3 削除の処理 Case 4 照会の処理 End Select End Sub の Case 1のところで 演算子 '=' は 型 'DataRowView' と 型 'Integer' に対して定義されていません。 のエラーになってしまいます。 Select Case Combobox.SelectedIndex Case 1 新規の処理 Case 2 修正の処理 Case 3 削除の処理 Case 4 照会の処理 End Select とSelectedIndex するとOKなのですが。 しかしSelectedValueを使うべきかと思うのですが... 対応等教えて頂けないでしょうか? 宜しくお願い致します。 | ||||
|
投稿日時: 2007-10-02 17:39
さかもとと申します。
Case 1 の「1」がInteger型だから、ということではなくてでしょうか・・・? _________________ ------------------------------------------ 拝啓、さかもとと申します♪ | ||||
|
投稿日時: 2007-10-02 18:11
なびさん
おそらく原因は DataSourceにDataSetをバインドした時にイベントが走る。 このときValueMemberが「処理区分」だと確定していない その場合ValueMemberの型がDataRowViewになっている。 ためだと思います 解決策として 1、イベントをSelectionChangeCommittedに代える 2、DataSourceをバインドする前に、ValueMember = 「処理区分」と書く 3、SelectedValueChangedイベントのハンドルを解除し DataSourceをバインドした後にaddHandlerで指定する 微妙に挙動が変わってきますので確認願います。 | ||||
|
投稿日時: 2007-10-02 18:13
すいません
1、2、3は順番に行なうのではなく どれか1つという意味です、 | ||||
|
投稿日時: 2007-10-02 20:59
解決方法のチョイスはお任せしますが、
これに関してはこのとおりしておいた方が良いです。 他人の手に渡った時 (改変される時に) 悩みの温床になりやすい箇所です。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-10-03 11:06
おはようございます。
すごいですね。 DataSourceをバインドする前に、ValueMember = 「処理区分」と書く で解決してしまいました。 |
1