|
分類:[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の考えがごっちゃになってしまっているのかとも思うのですが・・・
以上よろしくお願いします。
|