我不确定为什么这不起作用。我试图在我的表单上的列表视图框中并排显示我的数据库中的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
由于这些名称来自人物栏目,而且这些数字来自专栏。
答案 0 :(得分: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);
}
答案 1 :(得分: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()));
}