ListView 使用Clear方法后,重新添加列、添加行,但是只有第一次有效,以后再也不能显示内容了。请大家帮帮忙!
代码如下:
DataTable table = dataSet.Tables[0];listView.Clear();
foreach (DataColumn col in table.Columns)
{
listView.Columns.Add(col.ColumnName, -2, 
System.Windows.Forms.HorizontalAlignment.Center);
}foreach (DataRow row in table.Rows)
{
string[] vals = new string[row.ItemArray.Length];
for (int i = 0; i < row.ItemArray.Length; i++)
{
vals[i] = row[i].ToString();
}
listView.Items.Add(new ListViewItem(vals));
}

解决方案 »

  1.   

    listView.Clear();改为listView.Items.Clear();
      

  2.   

    行和列都要重新设置,所以要用listView.Clear()。只有第一次设置有效,重新设置以后不能显示内容,包括列头都无法显示。
      

  3.   

    liveView.BeginUpdate();
    listView.Columns.Clear();
    listView.Items.Clear();
    listView.EndUpdate();
      

  4.   

    对不起,没看清楚,试了一下,好像没有问题啊,是不是因为table没有更新?
      

  5.   

    改成这样就可以拉 string[] vals = new string[row.ItemArray.Length];
    ListViewItem item = new ListViewItem(row[0].ToString());
    for (int i = 1; i < row.ItemArray.Length; i++)
    {
    item.SubItems.Add(row[i].ToString());
    }
    listView.Items.Add(item);
      

  6.   

    谢谢各位,问题已经解决了。listView.Columns.Add使用另一个重载方法就可以了,M$真是变态。代码如下:
    foreach (DataColumn col in table.Columns)
    {
        ColumnHeader header = new ColumnHeader();
        header.Text = col.ColumnName;
        listView.Columns.Add(header);
    }
      

  7.   

    是你自己弄错了,不应该用listView.Clear();那样得重新生成列,这对以后的增加删除时会带来影响,最好的方法还是用下面这种:
    foreach (ListViewItem Item in lsvEquipment.CheckedItems)
      {
       Item.Remove();
      }