日期:2014-05-20  浏览次数:20952 次

listview 显示大容量数据的时候,出现假死
listview 显示大容量数据的时候,出现假死,现在有111191条数据需要显示在listview 上面,
代码如下:
if (ht != null)
  {
  if (ht.Count > 0)
  {
  if (string.IsNullOrEmpty(txtItemID.Text.Trim()))
  {
  MessageBox.Show("请输入道具编号!");
  return;
  }

  lblTotalDataNum.Text = ht.Count.ToString();
  lvwItem.Visible = false;

  if (ht.ContainsKey(ItemID))
  {
  Hashtable temp = (Hashtable)ht[ItemID];
  foreach (DictionaryEntry de in temp)
  {
  ListViewItem item = new ListViewItem(ItemID.ToString()); //道具编号
  item.SubItems.Add(ItemDB.Instance.GetItemName(ItemID)); //道具名称
  item.SubItems.Add(de.Value.ToString()); //道具数量
  item.SubItems.Add(de.Key.ToString()); //角色名称
  lvwItem.Items.Add(item);
  }
  }
  lvwItem.Visible = true;
  lblCurrentDataNum.Text = lvwItem.Items.Count.ToString();
  return;
}

如果我输入道具6378的话,hasttable里面就有111191条数据。我需要全部显示在listview里面,但是由于数据量过大,导致listview假死,请高手解答如何避免假死,同时也能显示出所有数据。有代码更好,在此感激不尽。

------解决方案--------------------
GridView有虚拟模式,ListView也有。我项目的数据显示动辄就是千万条,虽然没有用listview,但远离相同。看看这个http://msdn.microsoft.com/zh-cn/library/system.windows.forms.listview.virtualmode.aspx
------解决方案--------------------
大数据分页加异步是解决的根本
------解决方案--------------------
http://www.cnblogs.com/jasenkin/archive/2011/08/22/listview_virtual_model.html