- PR -

Comboboxの表示項目の変更方法について

1
投稿者投稿内容
たか
会議室デビュー日: 2003/08/13
投稿数: 15
投稿日時: 2003-10-08 09:27
お世話になっています。
VB.NETで、Windowsアプリケーションをしているのですが
テキストボックスの値が変更されると、その値を元に
コンボボックスの表示項目を変更したいのですが
どのようにしたらいいのでしょうか?

やりたい事
@テキストボックスの値を変更する。

A変更されたテキストボックスの値と、コンボボックスのValueMember(コンボボックスにデータセットをバインドしてます)
 が一致した場合、その値を元にしたDisplayMemberを表示する。

 ご教授、宜しくお願い致します。
聖人@SKB
ベテラン
会議室デビュー日: 2003/03/26
投稿数: 58
お住まい・勤務地: 横浜(MM21)勤務の筈だがいつも顧客先常駐
投稿日時: 2003-10-08 17:13
※勉強がてらに試した結果ですので,的外れの回答でしたら,参考程度にして下さい。
※C#での記述になります。

DataViewをComboBoxのDataSourceに使用しては如何でしょう。
(1)テキストボックスの値によって,コンボボックスの値を絞込みたい
なら RowFilterにテキストボックスの値を設定する
(2)テキストボックスの値によって,コンボボックスに表示する項目(列)を変更したい
なら DisplayMemberにテキストボックスの値を設定する
で対処できると思います。

***当方で試した内容***
・SQL Serverに以下のテーブルを作成
 テーブル名:TABLE1
カラム:
id char(2)
code char(2)
item1 nvarchar(50)
item2 nvarchar(50)
・以下のレコードを追加
01, AA, item1-01-AA, item2-01-AA
02, AA, item1-02-AA, item2-02-AA
03, BB, item1-03-BB, item2-03-BB
04, BB, item1-04-BB, item2-04-BB
05, CC, item1-05-CC, item2-05-CC
06, CC, item1-06-CC, item2-06-CC

・Form1.csに"サーバーエクスプローラー" を使用してTABLE1を配置
・DataSetの生成
・textBox1, ComboBox1をForm1に配置
・DataViewを宣言
private DataView dv = new DataView();
・Form_Loadに以下のコードを記述
sqlDataAdapter1.Fill(dataSet11);
dv.Table = dataSet11.TABLE1;
comboBox1.DataSource = dv;
comboBox1.DisplayMember = "item1";
・textBox1_TextChangedに以下のコードを記述( (1)の場合 )
//今回はcode列を使用してフィルタをかけました
//codeにAA,BB,CCが入るとcomboBoxが絞込み表示されます
dv.RowFilter = "code = '" + textBox1.Text + "'";

・textBox1_TextChangedに以下のコードを記述( (2)の場合 )
//item1, item2が入るとcomboBoxの表示が変わります
comboBox1.DisplayMember = textBox1.Text;

もっと良い方法をご存知の方,更なる回答を書き込み願います。
たか
会議室デビュー日: 2003/08/13
投稿数: 15
投稿日時: 2003-10-08 18:05
 お世話になっています。
 聖人さん、回答ありがとうございました。
聖人さんがおっしゃる通りにすると上手く
Textboxの値が変更されると、ComboBoxのDisplayMemberが
変更されました。
すごく助かりました、ありがとうございました。
1

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