2015-03-03 63 views
0

从MySQL数据库获取数据并将此数据添加到ListView。 当我这样做时,数据开始添加到第二行。第一行是空的,但它会正确加载所有数据。只有数据库中的第一行被添加到第二行的列表视图中。Listitem添加到第二行的c#

private void CreateSessionList() { 
    SessionList.View = View.Details; 
    SessionList.Font = Listctrlfont; 

    connection.Open(); 
    cmd = connection.CreateCommand(); 
    cmd.CommandText = "SELECT * FROM sessiontbl"; 
    MySqlDataAdapter ada = new MySqlDataAdapter(cmd); 
    DataTable dt = new DataTable(); 
    ada.Fill(dt); 
    for (int i = 0; i < dt.Rows.Count; i++) { 
     DataRow dr = dt.Rows[i]; 
     ListViewItem listitem = new ListViewItem(dr["SessionID"].ToString()); 
     listitem.Font = Listitemfont; 
     listitem.SubItems.Add(dr["InstID"].ToString()); 
     listitem.SubItems.Add(dr["Trainee"].ToString()); 
     listitem.SubItems.Add(dr["SessDt"].ToString()); 
     listitem.SubItems.Add(dr["ModelID"].ToString()); 
     listitem.SubItems.Add(dr["ModelName"].ToString()); 
     SessionList.Items.Add(listitem); 
    } 
} 

我做错了什么?

+1

在开始添加项目之前SessionList为空吗?如果在'connection.Open()'之前添加'MessageBox.Show(SessionList.Items.Count.ToString());',你看到了多少个数字? – cubrr 2015-03-03 11:24:32

+0

它返回1.当我通过查看下面的解决方案添加清除()。现在它返回0.谢谢 – Anu 2015-03-03 11:46:30

回答

1

您可能在设计器的列表视图中有一个占位符项目。 在开始填充之前,请先清除项目,以确保您从干净的石板开始。

这也意味着你可以随时从dB重新加载。

SessionList.Items.Clear(); 
0

检查Datatable的第一行是否包含列名。在这种情况下,您必须从dt.Rows集合中的i = 1开始。