【问题标题】:Display multiple columns from Database in ListView在 ListView 中显示数据库中的多个列
【发布时间】:2023-03-29 00:22:01
【问题描述】:

我不确定为什么这不起作用。我正在尝试在表单的列表视图框中并排显示数据库中的 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

因为名称来自列 People,而数字来自列 Occur。

【问题讨论】:

  • 你为什么不直接输入SELECT person, occur FROM tblpeople
  • 好提示!我会把它改成那样,但这并不能真正回答我的问题。
  • 看看this question
  • 请不要在标题前加上“C#”之类的前缀。这就是标签的用途。

标签: c# database listview


【解决方案1】:

要获得想要的效果,您应该将视图样式设置为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);
  }

【讨论】:

  • @user1353517:很好。但是,如果您想显示表格,您还可以查看 DataGridView 的 ;)
【解决方案2】:

方法 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()));
}

【讨论】:

    猜你喜欢
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    相关资源
    最近更新 更多