C# 在ListView中显示数据库中的多个列
我不知道这为什么不起作用。我试图在表单的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
("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的;