1

我不确定为什么这不起作用。我正在尝试在表单的列表视图框中并排显示数据库中的 2 列。当我使用它时,它不会正确显示任何数据。

    ("SELECT Person FROM tblPeople" + " SELECT Occur FROM tblpeople" , conn);  

try
{
    SqlDataReader reader = cmd.ExecuteReader();

    while (reader.Read())
    {
       listView1.Items.Add(reader["People"].ToString());
       listView1.Items.Add(reader["Occur"].ToString()); 
    }

所以我正在寻找我的数据显示如下:

    John   3
    James  4
    Frank  1

由于名称来自“人员”列,而数字来自“发生”列。

4

2 回答 2

4

要获得所需的效果,您应该将视图样式设置为Details并将第二列值添加为子项。

基本上,你应该这样做:

  listView1.View = View.Details;

  listView1.Columns.Add("People");
  listView1.Columns.Add("Occur");

  while (reader.Read())
  {
      var item = new ListViewItem();
      item.Text = reader["People"].ToString();        // 1st column text
      item.SubItems.Add(reader["Occur"].ToString());  // 2nd column text
      listView1.Items.Add(item);
  }
于 2012-04-30T22:02:28.257 回答
0

方法 Add() 每次将新项目添加到集合中。如果您的项目包含来自两个对象的值,最简单的方法可能是创建一个新项目来封装它,这样您就可以轻松地将它绑定到您的控件。

考虑这样的事情:

public class MyNewObject
{
    public string People { get;set; }
    public string Occur { get;set; }

    public MyNewObject(string p, string o)
    { 
        People = p;
        Occur = o;
    }
}

然后就

while (reader.Read())
{
    listView1.Items.Add(new MyNewObject(reader["People"].ToString(),reader["Occur"].ToString()));
}
于 2012-04-30T21:59:14.157 回答