StalistView是一个WinForm里面的ListView控件
绑定行大约1800,我第一次登录,绑定较快,但是当我重登录的时候,这就很慢
麻烦大家给指点下,我跟一下,时间就耗在循环的地方,令我奇怪的是,为什么第一次和第二次差近8秒种时间,才能加载

private void LoadStaListToStalistView()
{
DataSet Ds = new DataSet();
Da = new SqlDataAdapter("Select * from  StationInfo Order by StationID" , Conn) ;
Da.Fill(Ds); StalistView.Items.Clear();
for(int i=0 ;i< Ds.Tables[0].Rows.Count ; i++ )
{
ListViewItem item1;
item1= StalistView.Items.Add( Ds.Tables[0].Rows[i]["StationID"].ToString() );
//item1.SubItems.Add( Ds.Tables[0].Rows[i]["Accounts"].ToString() ); 
item1.SubItems.Add( Ds.Tables[0].Rows[i]["StationName"].ToString() );
item1.SubItems.Add( Ds.Tables[0].Rows[i]["MAC"].ToString() );
item1.ImageIndex = 10 ; } this.StalistView.ListViewItemSorter = new CustomCls.ListViewItemComparer(0,0,this.StalistView.Sorting);
}

解决方案 »

  1.   

    StalistView.Items.Clear();
    StalistView.BeginUpdate(); //加这个
    for(int i=0 ;i< Ds.Tables[0].Rows.Count ; i++ )
    {
    ListViewItem item1;
    item1= StalistView.Items.Add( Ds.Tables[0].Rows[i]["StationID"].ToString() );
    //item1.SubItems.Add( Ds.Tables[0].Rows[i]["Accounts"].ToString() ); 
    item1.SubItems.Add( Ds.Tables[0].Rows[i]["StationName"].ToString() );
    item1.SubItems.Add( Ds.Tables[0].Rows[i]["MAC"].ToString() );
    item1.ImageIndex = 10 ; }
    StalistView.EndUpdate(); //加这个
      

  2.   

    估计你的时间花在 StalistView.Items.Clear();上
      

  3.   


    StalistView.Items.Clear();
    改成手动逐个删除
      

  4.   

    BeginUpdate(),EndUpdate()只是完成一次性加载
    Items.Clear()改成手动删除,依然没变,甚至耗用时间更长问题还没解决,再顶一下
      

  5.   

    TO:为什么第一次和第二次差近8秒种时间,才能加载之所以时间会相差这么多,主要是因为都花在清除ListView所有项..所以你用“BeginUpdate(),EndUpdate()只是完成一次性加载”没有什么效果..但你1800条记录删除,花几秒钟也情有可原啊..
      

  6.   

    应该是这一句出问题:第一次你可能不需要StalistView.Items.Clear();但是第二次你有了1800
      

  7.   

    能不能不用ListView,用DataGridView可以不?那样直接绑定数据源,也不涉及删除的操作,重新绑定就行了..
    如果非得用ListView,你别用DataTable,换成DataReader看看会不会稍快一点(至于哪个快,我也不是很清楚),但就算快,也只能提高循环加载ListView的速度,对于删除还是一样的效果..因为你的记录不少哦,一千多条啊..
      

  8.   

    ListView是不可能换了,这是以前的程序,我是拿来改,改多了工作就大了,我也不知道为什么那个猪以前不用Grid,那个比这个要快多了
    谁要能帮我解决了,再开新贴,单奖100分
      

  9.   

    你试过DataReader吗?呵呵,那你把机器的配得更强一些,速度肯定快..
      

  10.   

    ListView删除速度最快,应该是这样了..StalistView.BeginUpdate(); //加这个
    StalistView.Items.Clear();
    StalistView.EndUpdate(); //加这个把添加的也一起放在里面,试试,看速度能提高多少..
      

  11.   

    嗯嗯,楼上的的不厚道,LOCK是给多线程用的,乱用会出问题的问题依然,放弃,散分啦