C# 在ListView中显示数据库中的多个列

C# 在ListView中显示数据库中的多个列,c#,database,listview,C#,Database,Listview,我不知道这为什么不起作用。我试图在表单的listview框中并排显示数据库中的两列。当我使用它时,它不会正确显示任何数据 ("SELECT Person FROM tblPeople" + " SELECT Occur FROM tblpeople" , conn); try { SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { listView1.Item

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

    ("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
public class MyNewObject
{
    public string People { get;set; }
    public string Occur { get;set; }

    public MyNewObject(string p, string o)
    { 
        People = p;
        Occur = o;
    }
}
  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);
  }

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

方法每次向集合中添加新项时,Add都会添加。如果您的项由两个对象的值组成,最简单的方法可能是创建一个新项来封装它,这样您就可以轻松地将它绑定到控件

考虑一下这样的情况:

    John   3
    James  4
    Frank  1
public class MyNewObject
{
    public string People { get;set; }
    public string Occur { get;set; }

    public MyNewObject(string p, string o)
    { 
        People = p;
        Occur = o;
    }
}
  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);
  }
然后就

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

方法Add每次向集合中添加新项时都会添加。如果您的项由两个对象的值组成,最简单的方法可能是创建一个新项来封装它,这样您就可以轻松地将它绑定到控件

考虑一下这样的情况:

    John   3
    James  4
    Frank  1
public class MyNewObject
{
    public string People { get;set; }
    public string Occur { get;set; }

    public MyNewObject(string p, string o)
    { 
        People = p;
        Occur = o;
    }
}
  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);
  }
然后就

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

要获得所需效果,应将视图样式设置为“详细信息”,并将第二列值添加为子项

基本上,您应该这样做:

    John   3
    James  4
    Frank  1
public class MyNewObject
{
    public string People { get;set; }
    public string Occur { get;set; }

    public MyNewObject(string p, string o)
    { 
        People = p;
        Occur = o;
    }
}
  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);
  }

要获得所需效果,应将视图样式设置为“详细信息”,并将第二列值添加为子项

基本上,您应该这样做:

    John   3
    James  4
    Frank  1
public class MyNewObject
{
    public string People { get;set; }
    public string Occur { get;set; }

    public MyNewObject(string p, string o)
    { 
        People = p;
        Occur = o;
    }
}
  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);
  }

你为什么不把选择的人,从TBL的人发生?好提示!我会改成那样,但这并不能真正回答我的问题。看一看。请不要在标题前加上C之类的前缀。这就是标签的作用。为什么不把SELECT person放在tblpeople中呢?好提示!我会改成那样,但这并不能真正回答我的问题。看一看。请不要在标题前加上C之类的前缀。这就是标签的作用。@user1353517:好的。但是,如果您想显示表,还可以查看DataGridView的@用户1353517:好。但是,如果您想显示表,还可以查看DataGridView的;