- PR -

コンボボックスやリストボックスでコード値を扱う方法

1
投稿者投稿内容
pat
会議室デビュー日: 2006/08/03
投稿数: 7
投稿日時: 2008-06-15 17:15
これまでJavaでWebシステムを少々やっていた者です。


マスタテーブル名 M_SHAIN
SHAIN_CD SHAIN_NAME
101 福沢諭吉
102 樋口一葉
103 野口英世
という場合、
コンボボックスやリストボックスを扱う際に、
社員名を画面に表示させて、
社員CDを表示させずに、
社員名を選択してボタンを押下したときに社員CDを取得しようとしています。
インデックスはSelectedIndexで取得できることは分かっているのですが、
社員CDを取得する方法をいろいろと調べたのですがなかなか見つかりません。

JavaでWebならば、
Map map = new HashMap;
map.put("101", "福沢諭吉");
map.put("102", "樋口一葉");
map.put("103", "野口英世");
もしくは、
List list = new ArrayList;
list.add(new LabelValueBean("福沢諭吉", "101"));
list.add(new LabelValueBean("樋口一葉", "102"));
list.add(new LabelValueBean("野口英世", "103"));
とする処理を、VB.NETで実現したいのですが、
どなたかこのような処理をご経験の方がおられましたら、
ご教示頂けないでしょうか。
よろしくお願い致します。
カドルドエグ
常連さん
会議室デビュー日: 2008/05/29
投稿数: 25
投稿日時: 2008-06-15 17:46
これは私がC#×Windowsアプリ開発で使ってきた方法ですが、
考え方としては言語、Web・Winアプリ関係ないかなと思っているので一応参考までに…。

(1)「表示用名称」「内部値」の2つのプロパティを持った単純な内部クラスを作る
(2)その内部クラスの配列をつくる
(3)コンボボックスを例にとれば、
 ・DataSourceに(2)の配列を設定
 ・DisplayMemberに「表示用名称」を設定
 ・ValueMemberに「内部値」を設定

処理でコレを使うときは、SelectedIndexではなく、
よりデータ中心に処理するためにSelectedValueを使っています。

pat
会議室デビュー日: 2006/08/03
投稿数: 7
投稿日時: 2008-06-15 17:57
カドルドエグ様
早速のレスありがとうございます。

VB.NETではまだ内部クラスをあつかったことがありませんが、
とにかくご教示頂いた内容を、
いろいろとやってみます。

[ メッセージ編集済み 編集者: pat 編集日時 2008-06-15 17:58 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-06-15 18:21
内部クラス (インナークラス) とは
http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000889.html

例で示されたコードですと必要なさそうな気がしないまでもないです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
pat
会議室デビュー日: 2006/08/03
投稿数: 7
投稿日時: 2008-06-30 14:51
じゃんぬねっとさんの
他の投稿を見させていただき、
内部クラスと別の方法で解決できました。

Dim list As New System.Collections.ArrayList()

list.Add(New System.Collections.DictionaryEntry("101", "福沢諭吉"))
list.Add(New System.Collections.DictionaryEntry("102", "樋口一葉"))
list.Add(New System.Collections.DictionaryEntry("103", "野口英世"))

Me.ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
Me.ComboBox1.DataSource = list
Me.ComboBox1.ValueMember = "Key"
Me.ComboBox1.DisplayMember = "Value"

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)