C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 複数コンボボックスの連動


(過去ログ 20 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■8767 / inTopicNo.1)  複数コンボボックスの連動
  
□投稿者/ みこ (9回)-(2007/10/09(Tue) 18:18:14)

分類:[C#] 

初歩的な質問かもしれませんがどうぞご享受ください。
C#.netで開発しています。 VS2005、Access2007(mdb)、Windows XPです。

1つのWindowsフォームに複数のコンボボックスを作成し、DBから取得したデータを表示させたいのですが、
コンボA・・・県
コンボB・・・支店
コンボC・・・担当者
とし、コンボAで県を選択すると、その県の支店のみ絞り込んでコンボBに表示、支店の選択で、その支店の
担当者一覧をコンボCに表示するにはどうしたらいいでしょうか?

現在は県マスタ、支店マスタ、担当者マスタをそれぞれ用意し、支店マスタからは県マスタのKeyである
県コードで絞り込み、担当者マスタからは支店マスタのKeyである支店コードで絞り込みができるように
しています。
それぞれのテーブルのデータアダプタとデータセットを用意しています。


コンボAには県の一覧が表示されます。
コンボAのSelectedIndexChangedイベントで以下のようにしているのですが、コンボBには何も表示されません。

private void cmbA_SelectedIndexChanged(object sender, EventArgs e)
{
dsOffice.Clear();
odaOffice.SelectCommand.Parameters["BranchCode"].Value = cmbA.SelectedIndex.ToString();
odaOffice.Fill(dsOffice, "TBL_Office");
// 選択された県配下の支店を支店コンボにセット
cmbOffice.DataSource = dsOffice.Tables["TBL_Office"];
cmbOffice.ValueMember = "OfficeCode";
cmbOffice.DisplayMember = "OfficeName";

}

dsOfficeというのは支店マスタから支店の一覧を取得するデータセットです。
パラメータで指定しているBranchCodeが県コードになります。
TBL_Officeに支店の一覧がデータとしてはいっています。

コンボBはcmbOfficeとして定義しています。
コンボA→Bへの連動ができれば同様にB→Cの連動も可能かと思っています。

県コードは1〜でSelectedIndexをそのまま利用できるかと思ったのですが、これがまずいのでしょうか?
県から支店を絞り込めたら、そこからは、支店コードで担当者を絞り込むので、Indexでは使えないのは
わかっているのですが、どうしてよいかわかっていません。
デバッガで確認したところ、SelectedIndexは取得できているようですが、Fillの後、dsOfficeは空です。

不足している設定等があるのでしょうか?
Textはともかく、コンボのIndexやValueの考えがごっちゃになってしまっているのかとも思うのですが・・・

以上よろしくお願いします。
引用返信 編集キー/
■8770 / inTopicNo.2)  Re[1]: 複数コンボボックスの連動
□投稿者/ mあ (97回)-(2007/10/09(Tue) 18:41:49)
2007/10/09(Tue) 18:43:02 編集(投稿者)

No8767 (みこ さん) に返信
> odaOffice.SelectCommand.Parameters["BranchCode"].Value = cmbA.SelectedIndex.ToString

console.writeline("こんぼAの値:{0}",cmbA.SelectedIndex)

とかやってみたらどーでしょう?
えーっと、コンボボックスは、−1(未選択)、0(先頭項目)...N(最大数−1)ですが、

コンボボックスの index を cmbB のキーにすると後で思わぬところでドカーンかもしれません。
昇順で並んでいるから、とか、index+1 が cmbB のキーと同じだからとか安易に考えていると、です。

初期表示、ブランクで表示して欲しい、なんてプチ仕様変更はありがちですよね。



引用返信 編集キー/
■8777 / inTopicNo.3)  Re[2]: 複数コンボボックスの連動
□投稿者/ みこ (10回)-(2007/10/09(Tue) 23:26:11)
>mあさん
ありがとうございます。

Indexがとれているのはデバッグで確認はできていたので県→支店にはそのままつかえるかと思ってしまったのですが、
その次への展開はどのみちIndexは使えないのでSelectedValueでとるようにしました。

odaOffice.SelectCommand.Parameters["BranchCode"].Value = cmbA.SelectedValue.ToString();
                             ~~~~~~~~~~~~~~~~~~~

これで、県→支店の絞り込みも支店→担当者の絞り込みも問題なく連動できるようになりました。


解決済み
引用返信 編集キー/
■8778 / inTopicNo.4)  Re[3]: 複数コンボボックスの連動
□投稿者/ みこ (11回)-(2007/10/09(Tue) 23:27:22)
↑すみません。
~~~~~~の部分がずれてしまってますが、SelectedIndexをSelectedValueにしたってことを記したかったのです。

ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -