ListViewを高速に表示するには? への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 ヴァン  (社会人)
投稿日時
2009/10/10 03:02:49
こんにちは。
ListViewの表示に時間がかかっているのか、SQLに時間がかかっているのか?
どちらですか?
または、ListViewを止めてDataGirdViewにしてみてはどうですか?
ListViewの表示に時間がかかっているのか、SQLに時間がかかっているのか?
どちらですか?
または、ListViewを止めてDataGirdViewにしてみてはどうですか?
投稿者 hirosi  (社会人)
投稿日時
2009/10/10 01:42:15
お世話になっております。
データベースの商品マスタ5,600件ほどを、リストビューに表示する商品照会プログラムを作成しています。抽出件数千件以下と少ない時は数秒と早いのですが、5,600件全部を表示する場合は40秒程掛ってしまいます。これを、数秒で表示出来ないものかと悩んでおります。
下に、現在の処理を記述しました。
<プログラム記述例>
With LstVew
.Refresh()
.Items.Clear() 'ListViewコントロールを初期化
.BeginUpdate()
End With
データベースの抽出 … 略
SqlReader = SqlCmd.ExecuteReader() 'データを取得する
Do While (SqlReader.Read)
商品CD = Trim(SqlReader("商品CD"))
商品名カナ = Trim(SqlReader("商品名カナ"))
商品名漢字 = Trim(SqlReader("商品名漢字"))
希望小売価格 = Trim(SqlReader("希望小売価格"))
登録年月日 = Trim(SqlReader("登録年月日"))
Dim Item() As String = {商品CD, 商品名カナ, 商品名漢字, 希望小売価格, 登録年月日}
LstVew.Items.Add(New ListViewItem(Item)) 'リストビューに追加
Loop
SqlReader.Close()
LstVew.EndUpdate()
'----- リストビューの列幅を項目の長さで自動調節(-2)する -----------------------------
Dim ch As ColumnHeader
For Each ch In LstVew.Columns
ch.Width = -2
Next ch
こんな感じです。
何方かご教授をお願いします。
データベースの商品マスタ5,600件ほどを、リストビューに表示する商品照会プログラムを作成しています。抽出件数千件以下と少ない時は数秒と早いのですが、5,600件全部を表示する場合は40秒程掛ってしまいます。これを、数秒で表示出来ないものかと悩んでおります。
下に、現在の処理を記述しました。
<プログラム記述例>
With LstVew
.Refresh()
.Items.Clear() 'ListViewコントロールを初期化
.BeginUpdate()
End With
データベースの抽出 … 略
SqlReader = SqlCmd.ExecuteReader() 'データを取得する
Do While (SqlReader.Read)
商品CD = Trim(SqlReader("商品CD"))
商品名カナ = Trim(SqlReader("商品名カナ"))
商品名漢字 = Trim(SqlReader("商品名漢字"))
希望小売価格 = Trim(SqlReader("希望小売価格"))
登録年月日 = Trim(SqlReader("登録年月日"))
Dim Item() As String = {商品CD, 商品名カナ, 商品名漢字, 希望小売価格, 登録年月日}
LstVew.Items.Add(New ListViewItem(Item)) 'リストビューに追加
Loop
SqlReader.Close()
LstVew.EndUpdate()
'----- リストビューの列幅を項目の長さで自動調節(-2)する -----------------------------
Dim ch As ColumnHeader
For Each ch In LstVew.Columns
ch.Width = -2
Next ch
こんな感じです。
何方かご教授をお願いします。
>ListViewの表示に時間がかかっているのか、SQLに時間がかかっているのか?
>どちらですか?
ご指摘の点ですが、ListViewの表示に時間が掛かっています。
DataGirdViewを勉強してみます。