c#中的Listview不起作用

本文关键字:不起作用 Listview 中的 | 更新日期: 2023-09-27 18:25:19

我写的代码是:

public Form1()
{
        InitializeComponent();
        listView1.View = View.Details;
        SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=person;Integrated Security=True");
        SqlDataAdapter ada = new SqlDataAdapter("select * from personal", con);
        DataTable dt = new DataTable();
        ada.Fill(dt);
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            DataRow dr = dt.Rows[i];
            ListViewItem listitem = new ListViewItem(dr["name"].ToString());
            listitem.SubItems.Add(dr["lastname"].ToString());
            listView1.Items.Add(listitem);
        }
}

它编译时没有任何错误/警告,但没有显示任何内容。

c#中的Listview不起作用

在ListView中添加子项之前,您需要定义所需的列
在您的情况下,您需要两列,一列用于主文本(Name列),另一列用于从查询中提取的第一个也是唯一一个子项(LastName字段)。当然,如果将来你想在你的子项列表中添加更多的数据,这应该改变

listView1.Columns.Add("Name", -2, HorizontalAlignment.Left);
listView1.Columns.Add("LastName", -2, HorizontalAlignment.Left);
for (int i = 0; i < dt.Rows.Count; i++)
{
    DataRow dr = dt.Rows[i];
    ListViewItem listitem = new ListViewItem(dr["name"].ToString());
    listitem.SubItems.Add(dr["lastname"].ToString());
    listView1.Items.Add(listitem);
}

ListView.Columes属性上的表单MSDN

如果您的ListView控件没有指定任何列标题如果将View属性设置为Details,则ListView控件将不显示任何项目。