使用DataReader vb.net填充listview
我必须对有性能问题的应用程序进行一些修改。 我运行了探查器,其中一个问题是: 进行sql查询并将其存储在DataReader中。 查询返回大约2000行 然后开始一段时间的循环使用DataReader vb.net填充listview,vb.net,winforms,listview,Vb.net,Winforms,Listview,我必须对有性能问题的应用程序进行一些修改。 我运行了探查器,其中一个问题是: 进行sql查询并将其存储在DataReader中。 查询返回大约2000行 然后开始一段时间的循环 Dim monSQL作为IDataReader monSQL=一个SQL查询 在monSQL.Read时执行此操作 strArray(0)= strArray(1)= strArray(2)= strArray(3)=monSQL(“某物”)。ToString strArray(4)=monSQL(“某物”)。ToStr
Dim monSQL作为IDataReader
monSQL=一个SQL查询
在monSQL.Read时执行此操作
strArray(0)=
strArray(1)=
strArray(2)=
strArray(3)=monSQL(“某物”)。ToString
strArray(4)=monSQL(“某物”)。ToString
strArray(5)=monSQL(“某物”)。ToString
如果不是IsDBNull(monSQL(“某物”)),那么
strArray(6)=(monSQL(“某物”))
strArray(7)=monSQL(“某物”)。ToString
strArray(8)=monSQL(“某物”)。ToString
strArray(9)=monSQL(“某物”)。ToString
strArray(10)=monSQL(“某物”)。ToString
如果结束
objListItem=新的ListViewItem(strArray)
objListItem.Tag=lngNoLot
ListView.Items.Add(objListItem)
环
在while循环中,数据插入到listview中
完成循环需要相当长的时间(大约10秒)
我可以选择什么来加快速度?尝试在循环更新期间暂停任何图形:
listView1.BeginUpdate()
// your loop
listView1.EndUpdate()
如果您填写一个DataTable,您可以将其用作DataGridview的数据源,并节省大量时间和代码。我是否仍然能够在每行的开头有一个复选框来选择某一行?问题不在于插入该项。即使我对while循环中的所有内容都进行了注释,即不向列表中添加任何内容,也需要相同的时间。ListView对于查看DB数据来说是次优的—您实际上是在制作数据的字符串副本—以及许多子项—以添加到LV中。