|
分類:[.NET 全般]
いつも教えていただきありがとうございます。 C# VS2005 Access2007(mdb) WindowsXP で開発しています。
ComboBoxで分類を絞り込み、それをListBoxに表示しています
その上の条件で絞り込む対象のテーブルが異なります。 以下のようにコード(抜粋)を書いておりますが、flgがfalseの条件のときは、ComboBoxを選択するたびに正常にListBoxの表示が切り替わります。 ですが、flgがtrueの条件のときは切り替わらず非表示(実際は、Listには確保されているようですがtextが表示されない)となります。 dataSetからArrayListにいったん取り込みListBoxに表示させている処理部分は同じで、異なるのはselectの対象だけです。
true条件のときにも正常に表示させたいのですが、ListBox。Items.Clear()では表示がクリアされるだけなのでしょうか?(調べても、アイテムを全削除としか理解できない記述しかありません) true条件のときにもListBoxにAddRengeされる件数が正しいところまでは確認できています。 表示だけがされないのです(と思っています) 正しく表示するにはどうしたらいいでしょうか? 初歩的な質問かもしれませんが、よろしくお願いいたします。
if (flg == false) { odaMed.SelectCommand.CommandText = "select * from TBL_Med where TBL_Med.BunruiCode1 = '" + cmbBunrui.SelectedValue + "'"; dsMed.Clear(); odaMed.Fill(dsMed, "TBL_Med"); this.listBox1.Items.Clear();
int cnt = dsMed.Tables["TBL_Med"].Rows.Count; if (cnt != 0) { allList1.Clear(); for (int i = 0; i < cnt; i++) { allList1.Add(new DictionaryEntry(dsMed.Tables["TBL_Med"].Rows[i]["Code"], dsMed.Tables["TBL_Med"].Rows[i]["Name"])); } // listbox1に1件ずつ追加 this.listBox1.Items.AddRange(allList1.ToArray()); }
} else { // 個別データがある場合はtmpから取り込み odaMed.SelectCommand.CommandText = "select * from (tmp inner join TBL_Med on tmp.Code = TBL_Med.Code )" + " where TBL_Med.BunruiCode1 = '" + cmbBunrui.SelectedValue + "'"; dsMed.Clear(); odaMed.Fill(dsMed, "TBL_Med"); this.listBox1.Items.Clear();
int cnt = dsMedi.Tables["TBL_Med"].Rows.Count; if (cnt != 0) { allList1.Clear(); for (int i = 0; i < dsMed.Tables["TBL_Med"].Rows.Count; i++) { allList1.Add(new DictionaryEntry(dsMed.Tables["TBL_Med"].Rows[i]["Code"], dsMed.Tables["TBL_Med"].Rows[i]["Name"])); } // listbox1に追加 this.listBox1.Items.AddRange(allList1.ToArray()); } listBox1.Refresh(); }
|