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

わんくま同盟

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

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


(過去ログ 23 を表示中)
■10329 / )  ListBoxのリフレッシュ
□投稿者/ みこ (19回)-(2007/11/15(Thu) 19:02:48)

分類:[.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();
}


返信 編集キー/


管理者用

- Child Tree -