有些经验的大虾都知道,列表(datagridview)控件可以绑定datatable进行数据展示,一般的datatable包含的都是int,double,string等类型数据,但实际上也可以绑定自定义对象, 只要该对象可以实现tostring(),和 tryparse()方法即可。
class MyDef
{
   string _Content;
   
   public MyDef()
   {
     thread.Sleep(10); 
    }
   ....
    public override string ToString()
    {
       return _Content;
 
    }    public bool TryParse(string s)
    {
      _Content=s;
      return true;
    }
 }
  现在问题出来了, 如果datatable的所有元素都由MyDef组成(即组成的是MyDef[x,y ]数组),而MyDef初始化过程较慢,加载到列表控件时的显示体验就很慢,如果能够后台一边初始化MyDef,一边加载数据到datable, 并更新到列表控件(见我的博客文章http://blog.csdn.net/etudiant6666/article/details/7296416),速度会快很多。  有兴趣的同学可以实现一下,三八节结贴呦。

解决方案 »

  1.   

    顺便说一下,自定义对象从列表输入数据相对来说比较麻烦,但不是不可以,稍候我会发一篇文章说说我所采用的方法,但显示数据使用ToString()就可以。
      

  2.   

    兄弟,谁把几万条数据加载到一个datagridview不翻页来着?虽然现在机器配置都比较好,但为了节约资源也不至于把海量数据加载到内存吧,而且.NET空间默认只允许创建他的线程进行操作,如果数据量过大,你界面的刷新可能会出问题。
    我的建议用滚动实现,预加载前后两页数据,滚动条滚动时显示上一页或下一页的数据或交叉数据
      

  3.   

    另外,我用实验代码加载上万条记录试过,内存增量并不多(数兆字节而已),因此在C/S模式下加载大规模数据很常见,而B/S下很少,主要的原因是在通信的协议损耗上,即使用AJAX改进提高幅度也有限。