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);
}
绑定行大约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);
}
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(); //加这个
StalistView.Items.Clear();
改成手动逐个删除
Items.Clear()改成手动删除,依然没变,甚至耗用时间更长问题还没解决,再顶一下
如果非得用ListView,你别用DataTable,换成DataReader看看会不会稍快一点(至于哪个快,我也不是很清楚),但就算快,也只能提高循环加载ListView的速度,对于删除还是一样的效果..因为你的记录不少哦,一千多条啊..
谁要能帮我解决了,再开新贴,单奖100分
StalistView.Items.Clear();
StalistView.EndUpdate(); //加这个把添加的也一起放在里面,试试,看速度能提高多少..